可以将导入的库添加到target_link_libraries,它也负责包含目录吗?

时间:2014-09-18 08:12:45

标签: c++ include cmake

不知怎的,我正在努力找出是否可以在CMake中定义导入的库,指定目标属性(include_directories和库路径),并希望一旦我将该项目添加到另一个项目中的target_link_libraries,CMake将追加包含目录

假设我在一个名为Module-Conf.cmake的文件中有一个导入的库:

add_library(mymodule STATIC IMPORTED)
set_target_properties(mymodule PROPERTIES IMPORTED_LOCATION "${OUTPUT_DIR}/lib")
set_target_properties(mymodule PROPERTIES INCLUDE_DIRECTORIES "${OUTPUT_DIR}/include")

在项目中我添加依赖项:

include(Module-Conf)
target_link_libraries(${PROJECT_NAME} mymodule)

CMake会将include_directories属性附加到包含路径吗?现在我看不到路径所以我似乎必须自己使用get_target_property来做这个?

问题:我可以使用一些CMake魔法自动将include附加到另一个项目的include目录中吗?

非常感谢。 马丁

1 个答案:

答案 0 :(得分:14)

INCLUDE_DIRECTORIES属性和INTERFACE_INCLUDE_DIRECTORIES属性之间的差异是传递性。

改为设置INTERFACE_INCLUDE_DIRECTORIES

http://www.cmake.org/cmake/help/v3.0/manual/cmake-buildsystem.7.html#transitive-usage-requirements

相关问题