dzh*_*lil 12 linker cmake subdirectory
要将可执行文件与驻留在标准位置的库链接,可以在CmakeLists.txt文件中执行以下操作:
create_executable(generate_mesh generate_mesh.cpp)
target_link_libraries(generate_mesh OpenMeshCore)
Run Code Online (Sandbox Code Playgroud)
如果放入链接的库,则这将起作用
/usr/local/lib/libOpenMeshCore.dylib
Run Code Online (Sandbox Code Playgroud)
但是,在这种情况下,库位于
/usr/local/lib/OpenMesh/libOpenMeshCore.dylib
Run Code Online (Sandbox Code Playgroud)
如何指定target_link_libraries应该真正链接到sibdirectory中的库?我想知道target_link_libraries有一些有用的选项可以指定库位于标准位置的子目录中,例如
target_link_libraries(generate_mesh OpenMesh/OpenMeshCore)
Run Code Online (Sandbox Code Playgroud)
如果这是不可能的,有没有办法使用find_library /usr/local/lib递归搜索给定的库文件,包括其子目录?
Rud*_*udi 22
您可以添加不同的目录find_library.要使用此库,请调用cmake by 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})
Run Code Online (Sandbox Code Playgroud)