我正在使用debian和cmake在c ++中构建应用程序。该项目还基于一些静态库(ITK),这些库存储在libname-x.y.a
文件夹中,其中x
和y
表示版本号。
包含这些库的文件夹已添加到CMake的LINK_DIRECTORIES
,并且这些库将作为TARGET_LINK_LIBRARIES
添加到libname-x.y.a
。使用make
构建项目时,链接器/usr/bin/ld
输出cannot find -llibname
,即没有版本后缀。
在没有版本后缀的情况下将库添加到TARGET_LINK_LIBRARIES
时,项目不会构建。
有人知道如何解决这个问题吗?
P.S。在Windows上,编译和链接工作。
答案 0 :(得分:2)
解决方案是使用
find_library
并将结果传递给target_link_libraries
。这是一个更多的工作,但将会做 系统使用起来更加愉快。
取自常见CMake反模式列表,使用库而不检查:
http://voices.canonical.com/jussi.pakkanen/2013/03/26/a-list-of-common-cmake-antipatterns/