当我尝试使用
导入库时 add_library(libname SHARED IMPORTED)
set_property(TARGET libname PROPERTY IMPORTED_LOCATION /<foldername>/<sub-foldername>/lib")
cmake喊道:
CMake警告(dev)/CMakeLists.txt:28 (target_link_libraries):无法为目标指定链接库 “libname”,不是由这个项目构建的。
CMake不支持这个,但它过去常常工作而且是 允许兼容性。
未设置策略CMP0016:target_link_libraries()报告错误 只有参数不是目标。运行“cmake --help-policy CMP0016” 政策细节。使用cmake_policy命令设置策略 并抑制此警告。此警告适用于项目开发人员。 使用-Wno-dev来抑制它。
如果这是真的,那么将构建树中的某个库包含到另一个项目中的另一种最佳方法是什么。 我有一个库设置,另一个地方有可执行文件,将使用这些库。 通过cmake文档阅读,感觉这将是最好的前进方式,但看起来它只是一个受到支持的碎片。
答案 0 :(得分:6)
Cannot specify link libraries for target "libname" which is not built by this project
当您对某个目标使用target_link_libraries
时,您指定了如何构建它,
但导入的库已经构建。 CMake告诉你......
将导入的目标链接到可执行文件的示例:
add_library(boo SHARED IMPORTED)
set_target_properties(boo PROPERTIES IMPORTED_LOCATION "/path/to/boo/library")
add_executable(foo foo.cpp)
target_link_libraries(foo boo)
答案 1 :(得分:2)
当我尝试将Poco C ++ libPocoFoundation.so
库导入到我的项目中时,我得到了与navderm相同的错误,在尝试不同的解决方案失败后,我找到了一个对我有用的错误:
cmake_minimum_required(VERSION 3.5)
project(MyProject)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
add_library(PocoLib SHARED IMPORTED GLOBAL)
# It's important to specify the full path to the library you want to import
set_target_properties(PocoLib PROPERTIES IMPORTED_LOCATION "/usr/local/lib/Poco_1.7.2/lib/libPocoFoundation.so")
# create my executable
set(EXEC_SOURCE_FILES main.cpp)
add_executable(MyProject ${EXEC_SOURCE_FILES})
target_link_libraries(MyProject PocoLib)