2013-12-07 9 views
12

Für externe Bibliotheken kann der Benutzer einen nicht standardmäßigen Speicherort angeben, indem er den Pfad zu CMAKE_FLAGS hinzufügt oder -DMYLIB_ROOT hinzufügt. Innerhalb des CMake-Skripts möchte ich die PC-Datei pkg-config der Bibliothek finden. Da sich die PC-Datei nicht im Standardordner befindet, wird sie von pkg-config nicht mit FindPkgConfigpkg_search_module gefunden.Fügen Sie temporären Pfad zu pkg-config in CMake Skript hinzu?

Ich habe versucht, den Benutzer angegebenen Pfad zum PKG_CONFIG_PATH hinzuzufügen, aber es schien, um ignoriert zu werden:

include(FindPkgConfig) 
set(PKG_CONFIG_PATH "${PKG_CONFIG_PATH}:${MYLIB_ROOT}/lib/pkgconfig") 
pkg_search_module(PKG_MYLIB mylib) 

if(${PKG_MYLIB_FOUND}) 
... 

Als ich pkg-config vom Terminal mit dem modifizierten PKG_CONFIG_PATH Satz nennen, ist es die PC-Datei . Was mache ich falsch? Wie kann ich pkg_search_module arbeiten? Ich möchte vermeiden, pkg-config direkt von CMake anzurufen.

Antwort

8

Dies ist ein bekanntes Problem und ein ticket exists in CMake's bugtracker, aber es ist wegen fehlender Entwicklerinteresse gesperrt. Ich denke, man muss zuerst einen Patch zur Verfügung stellen ...

Bearbeiten: Nach dem Bugtracker wurde die Funktion implementiert und ist Teil von CMake 3.1.

10

Vielleicht folgendes wird die Arbeit machen

set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:${MYLIB_ROOT}/lib/pkgconfig") 
+0

Sie haben recht, das ist der Weg zu gehen, wenn CMake 3.0 oder älter verwendet wird. Mit 3.1 wird es automatisch eingebunden. – usr1234567

+0

Scheint die einzige Lösung zu sein, die für mich funktioniert ... –

Verwandte Themen