我有一个先前编译过的libgarithm.a库,并且有一个头文件garith.h如何在我的cmake项目中导入它。我已经包含了头文件 include_directories(" /家庭/拉夫/桌面/ garith-LIB /包括&#34) 但无法链接库,它给出了一个comile时间错误 ---未定义的引用`multi(int,int)'我的库中的功能
答案 0 :(得分:2)
您应该为库创建imported target,然后使用target_link_libraries
:
add_library(garithm STATIC IMPORTED)
set_property(TARGET garithm PROPERTY IMPORTED_LOCATION
/path/to/libgarithm.a
)
set_property(TARGET garithm PROPERTY INTERFACE_INCLUDE_DIRECTORIES
/home/gaurav/Desktop/garith-lib/include
)
...
add_executable(foo main.cpp)
target_link_libraries(foo garithm)
包含目录也在导入的目标上声明,因此您无需致电include_directories
编辑: target_include_directories
不适用于导入的目标,请设置属性INTERFACE_INCLUDE_DIRECTORIES
答案 1 :(得分:0)
从CMake 3.12.1开始,导入的目标还支持用于正常目标的target_include_directories以及其他语法糖。
对于使用这些语句编写cmake文件的用户,请添加cmake_minimum_required(3.12)
如果在编译特定的第三方库时遇到错误,请检查cmake --version