gpt4 book ai didi

linker - 如何使用cmake查找库?

转载 作者:行者123 更新时间:2023-12-04 11:17:58 29 4
gpt4 key购买 nike

要将可执行文件与位于标准位置的库链接,可以在 CmakeLists.txt 文件中执行以下操作:

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

如果正在链接的库被放置在
/usr/local/lib/libOpenMeshCore.dylib

但是,在这种情况下,库位于
/usr/local/lib/OpenMesh/libOpenMeshCore.dylib

如何指定 target_link_libraries 应该真正链接到放置在 sibdirectory 中的库?我想知道 target_link_libraries 有一些有用的选项可以指定库位于标准位置的子目录中,例如
target_link_libraries(generate_mesh OpenMesh/OpenMeshCore)

如果这是不可能的,有没有办法使用 find_library 来搜索 /usr/local/lib递归地,包括其子目录,对于给定的库文件?

最佳答案

您可以将不同的目录添加到 find_library .要使用此库,请通过 cmake -DFOO_PREFIX=/some/path ... 调用 cmake .

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})

关于linker - 如何使用cmake查找库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3380888/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com