2013-04-02 8 views
12

cmake versione 2.8.4forza CMake FIND_LIBRARY a guardare nella directory personalizzata

Ho le seguenti librerie di Apache Portable Runtime che io stesso ho compilato e vogliono la mia domanda di linkare.

mia directory del progetto in cui le mie librerie apr sono:

gw_proj/tools/apr/libs 

Nel mio CMakeLists.txt ho il seguente:

FIND_LIBRARY(APRUTIL NAMES "aprutil-1" 
    PATHS ${PROJECT_SOURCE_DIR}/tools/apr/libs) 

Il mio problema è su una macchina che ha già la Apache Portable Runtime già installato lo cercherà in questa cartella:

/usr/lib 

Così ignoreremo sempre il mio percorso personalizzato.

Come posso forzare il FIND_LIBRARY di guardare sempre nel mio elenco personalizzato:

gw_proj/tools/apr/libs 

Molte grazie per qualsiasi suggerimento

risposta

11

È possibile specificare l'ordine di ricerca utilizzando uno o più dei NO_DEFAULT_PATH, NO_CMAKE_ENVIRONMENT_PATH , NO_CMAKE_PATH, NO_SYSTEM_ENVIRONMENT_PATH, NO_CMAKE_SYSTEM_PATH, CMAKE_FIND_ROOT_PATH_BOTH, ONLY_CMAKE_FIND_ROOT_PATH o NO_CMAKE_FIND_ROOT_PATH.

Dalla documentazione per find_library:

L'ordine di ricerca predefinito è progettato per essere più specifici per meno specifica per i casi di uso comune. I progetti possono ignorare l'ordine semplicemente chiamando il comando più volte e con le opzioni * no_:

find_library(<VAR> NAMES name PATHS paths... NO_DEFAULT_PATH) 
find_library(<VAR> NAMES name) 

Una volta che una delle chiamate riesce la variabile risultato sarà impostato e memorizzato nella cache in modo che nessuna chiamata cercherà di nuovo .

Quindi nel tuo caso, si può fare

FIND_LIBRARY(APRUTIL NAMES "aprutil-1" 
    PATHS ${PROJECT_SOURCE_DIR}/tools/apr/libs NO_DEFAULT_PATH) 
+0

Grazie, ha funzionato come un fascino. – ant2009

Problemi correlati