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 链接到系统库的主要内容,如果未能解决你的问题,请参考以下文章

CMake:将第三方库链接到项目库

注册。使用 CMake 将外部库链接到项目

[cmake]如何使用 cmake 在 windows 上包含和链接系统库

CMake 链接到外部库

opencv静态链接库cmake链接顺序问题

CMAKE将动态库链接到模块,但不显示为链接依赖