2010-08-01 18 views
12

Para enlazar un archivo ejecutable con una biblioteca que se encuentra en una ubicación estándar, uno puede hacer lo siguiente en un archivo CMakeLists.txt:¿Cómo encontrar una biblioteca con cmake?

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

esto funcionaría si la biblioteca, que está siendo vinculado en contra, se colocó en

/usr/local/lib/libOpenMeshCore.dylib 

Sin embargo, en este caso la biblioteca reside bajo

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

¿Cómo puedo especificar que Shou target_link_libraries ¿De verdad enlace contra una biblioteca ubicada en un sibdirectorio? Me pregunto si hay alguna opción útil para target_link_libraries que especifique que la biblioteca se encuentra en un subdirectorio en una ubicación estándar, p. Ej.

target_link_libraries(generate_mesh OpenMesh/OpenMeshCore) 

Si eso no es posible, ¿hay una manera de utilizar find_library para buscar de forma recursiva /usr/local/lib, incluyendo sus subdirectorios, para el archivo de biblioteca determinada?

Respuesta

21

Puede agregar directorios diferentes a find_library. Para usar esta biblioteca, llame a cmake al 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

¡Fue un placer para mí gracias! – alexr

Cuestiones relacionadas