外部项目由CMake构建并安装在通过
CMAKE_PREFIX_PATH
由于它是CMake项目,因此安装正确
.cmake
文件夹。在这些自动生成的文件中
EXPORTED
创建目标并设置所有必需的属性。
我想做的是,不修改原文
CMakeLists.txt
-添加一个编译定义,我需要它来正确地包含这个库的头文件。
到目前为止,我已经尝试了两种方法:
重新添加库并正常指定定义
add_library(_external_lib_name_ INTERFACE IMPORTED)
target_compile_definitions(_external_lib_name_ INTERFACE FOO_BAR)
只需添加定义
target_compile_definitions(_external_lib_name_ INTERFACE FOO_BAR)
这一次,CMake抱怨:
CMake Error at foo.cmake:1 (target_compile_definitions):
Cannot specify compile definitions for target "_external_lib_name_" which is not built by this project.
add_library(_proxy_target_ INTERFACE)
target_link_libraries(_proxy_target_ INTERFACE _external_lib_name_)
target_compile_definitions(_proxy_target_ INTERFACE FOO_BAR)
虽然这个方法可能有效,但有人知道是否有更好的方法来修改导入的目标吗?
使现代化
使用Tsyvarev的答案,我能够使其工作,但还有一个问题:为了正确修改目标,我需要
include
第一个
find_package
之后
set_property
包括
CMakeLists.txt
add_subdirectory
目标持有旧财产。