在cmake中使用包含相邻子项目

时间:2014-01-29 19:27:50

标签: api include cmake subdirectory

我开发了一个由多个共享库组成的项目,并使用CMake构建它。 每个库都是通过add_subdirectory()构建的。

将第一个库的所有API标头添加到第二个库的CMakeLists.txt的最佳方法是什么?

2 个答案:

答案 0 :(得分:7)

对目标本身中的include目录进行编码:

http://www.cmake.org/cmake/help/git-master/manual/cmake-buildsystem.7.html#include-directories-and-usage-requirements

该doc是新的,但自CMake 2.8.11起存在target_include_directories命令。将它与INTERFACE或PUBLIC选项一起使用。

答案 1 :(得分:5)

要回答 steveire

用于导出API的库我们应该写

target_include_directories("target_with_api" INTERFACE "path_to_api_includes")

对于使用此API的库,我们编写

target_include_directories("api_client_target_name" PRIVATE
             $<TARGET_PROPERTY:"target_with_api",INTERFACE_INCLUDE_DIRECTORIES>)

其中$<TARGET_PROPERTY:"target_with_api",INTERFACE_INCLUDE_DIRECTORIES>)返回我们使用API​​

分配给库的目标属性