CMAKE 链接到系统库
Posted
技术标签:
【中文标题】CMAKE 链接到系统库【英文标题】:CMAKE linking to system library 【发布时间】:2011-10-09 10:52:32 【问题描述】:我们想用CMAKE
系统建立一个共享库。是这样的:
lib/
CMakeLists.txt
src/
CMakeLists.txt
module/
CMakeLists.txt
module1.c
foo.c
module1.c
需要一些标准共享库,例如librt
。我们有
add_library(module module1.c)
target_link_libraries(module rt)
在module/
子目录中。但仍然收到来自librt
的内容未知的错误。
【问题讨论】:
【参考方案1】:如果 librt 与 -lrt 链接,那么在 CMake 中可以这样链接:
target_link_libraries(module -lrt)
【讨论】:
根据voices.canonical.com/jussi.pakkanen/2013/03/26/…这不是一个好主意 根据一个不再存在的网站,这不是一个好主意。不是很有帮助。 以上网站存档在这里:web.archive.org/web/20190722182127/http://voices.canonical.com/…【参考方案2】:实际上,您正在做的事情应该有效。如果编译器找不到库,它可能根本不在标准库路径中。您可以使用以下帮助指定不同的link_directories
(编译器的-L/some/path
参数)。
cmake --help-command link_directories
在调试 CMake 构建时您可以做的另一件有用的事情是打印出运行编译器的命令:
make VERBOSE=1
然后您可以获取命令并手动调整它们以使其正常工作。之后就是修改CMAKE_C_FLAGS
/include_directories
/link_directories
【讨论】:
以上是关于CMAKE 链接到系统库的主要内容,如果未能解决你的问题,请参考以下文章