linux - CMake:链接静态库与文件名中的版本

标签 linux cmake linker-errors

我正在使用 debian 和 cmake 在 C++ 中构建应用程序。该项目进一步基于一些静态库 ( ITK ),它们存储在文件夹中 libname-x.y.a 其中 xy 表示版本号。

包含库的文件夹被添加到 CMake 的 LINK_DIRECTORIES,库被添加到 TARGET_LINK_LIBRARIES 作为 libname-x.y.a。使用make 构建项目时,链接器/usr/bin/ld 输出cannot find -llibname,即没有版本后缀。

将库添加到没有版本后缀的 TARGET_LINK_LIBRARIES 时,项目也不会构建。

有人知道如何解决这个问题吗?

附言在 Windows 上,编译和链接工作。

最佳答案

The solution is to use find_library and pass the result from that to target_link_libraries. This is a bit more work up front but will make the system more pleasant to use.

摘自常见 CMake 反模式列表不检查就使用库部分:

http://voices.canonical.com/jussi.pakkanen/2013/03/26/a-list-of-common-cmake-antipatterns/

关于linux - CMake:链接静态库与文件名中的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33741203/

相关文章:

C++ "unresolved external symbol"使用来自不同项目的命名空间

linux - bash 脚本中双引号的意外行为

linux - 如何使用十六进制编辑器在Linux中制作可执行的ELF文件?

java - Commons VFS 和 Java.net.URL - 添加对 "sftp://"协议(protocol)的支持

linux - 如何在shell脚本中隐藏oracle数据库密码

linux - 使用 cmake 构建 paraview 后,vtk 文件打开(核心转储)

cmake - 用Clang-Format格式化CMakeLists.txt

gcc - CMake 相当于 -l 作为 ld 链接到库的 gcc 指令

c++ - G++ - 未定义对已定义成员函数的引用

c - 一个项目中的多个文件 - C