2010-08-01 17 views
12

Per collegare un file eseguibile con una libreria che risiede in un percorso standard, si può fare quanto segue in un file CMakeLists.txt:Come trovare una libreria con cmake?

create_executable(generate_mesh generate_mesh.cpp) 
target_link_libraries(generate_mesh OpenMeshCore) 

questo funzionerebbe se la libreria, che è collegata contro, è stata posta in

/usr/local/lib/libOpenMeshCore.dylib 

Tuttavia, in questo caso la libreria risiede sotto

/usr/local/lib/OpenMesh/libOpenMeshCore.dylib 

Come posso specificare che shou target_link_libraries Davvero un collegamento con una biblioteca collocata in una sibdirectory? Mi chiedo che ci sia qualche opzione utile per target_link_libraries che specifichi che la libreria si trova in una sottodirectory in una posizione standard, ad es.

target_link_libraries(generate_mesh OpenMesh/OpenMeshCore) 

Se ciò non fosse possibile, c'è un modo per utilizzare find_library per cercare /usr/local/lib ricorsivamente, comprese le sue sotto-directory, per il dato file di libreria?

risposta

21

È possibile aggiungere diverse directory a find_library. Per utilizzare questa libreria, chiamare cmake per cmake -DFOO_PREFIX=/some/path ....

find_library(CPPUNIT_LIBRARY_DEBUG NAMES cppunit cppunit_dll cppunitd cppunitd_dll 
      PATHS ${FOO_PREFIX}/lib 
        /usr/lib 
        /usr/lib64 
        /usr/local/lib 
        /usr/local/lib64 
      PATH_SUFFIXES debug) 

find_library(CPPUNIT_LIBRARY_RELEASE NAMES cppunit cppunit_dll 
      PATHS ${FOO_PREFIX}/lib 
        /usr/lib 
        /usr/lib64 
        /usr/local/lib 
        /usr/local/lib64 
      PATH_SUFFIXES release) 

if(CPPUNIT_LIBRARY_DEBUG AND NOT CPPUNIT_LIBRARY_RELEASE) 
    set(CPPUNIT_LIBRARY_RELEASE ${CPPUNIT_LIBRARY_DEBUG}) 
endif(CPPUNIT_LIBRARY_DEBUG AND NOT CPPUNIT_LIBRARY_RELEASE) 

set(CPPUNIT_LIBRARY debug  ${CPPUNIT_LIBRARY_DEBUG} 
        optimized ${CPPUNIT_LIBRARY_RELEASE}) 

# ... 
target_link_libraries(foo ${CPPUNIT_LIBRARY}) 
+0

Ha funzionato un piacere per me grazie! – alexr

Problemi correlati