2013-12-07 7 views
12

Per le librerie esterne l'utente può specificare una posizione non standard aggiungendo il percorso allo CMAKE_FLAGS o aggiungendo -DMYLIB_ROOT. All'interno dello script CMake voglio trovare il file pc pkg-config della libreria. Poiché il file del pc non si trova nella cartella standard, non viene trovato da pkg-config con pkg_search_module dello.Aggiungi temporaneamente il percorso a pkg-config all'interno dello script CMake?

ho cercato di aggiungere il percorso dall'utente dato al PKG_CONFIG_PATH ma sembrava di essere ignorato:

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

if(${PKG_MYLIB_FOUND}) 
... 

Quando chiamo pkg-config dal terminale con il modificata PKG_CONFIG_PATH set, trovare il file pc . Che cosa sto facendo di sbagliato? Come posso far funzionare pkg_search_module? Mi piacerebbe evitare di chiamare pkg-config direttamente da CMake.

risposta

8

Questo è un problema noto e uno ticket exists in CMake's bugtracker, ma è backlock a causa della mancanza di interesse dello sviluppatore. Immagino che si debba prima fornire una patch ...

Modifica: Secondo il bugtracker, la funzionalità è stata implementata e fa parte di CMake 3.1.

10

Forse il seguente farà il lavoro

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

Hai ragione, questa è la strada da percorrere quando si usa CMake 3.0 o più anziani. Con 3.1 sarà incluso automaticamente. – usr1234567

+0

Sembra essere l'unica soluzione che funziona per me ... –

Problemi correlati