【发布时间】:2014-01-29 19:27:49
【问题描述】:
我开发了一个由多个共享库组成的项目,并使用 CMake 构建它。
每个库都是通过add_subdirectory() 构建的。
将第一个库的所有API头添加到第二个的CMakeLists.txt中的最佳方法是什么?
【问题讨论】:
-
这里,我的意思是当我不想链接提供 API 的库时,我只需要获得对标头的访问权限
标签: api include cmake subdirectory
我开发了一个由多个共享库组成的项目,并使用 CMake 构建它。
每个库都是通过add_subdirectory() 构建的。
将第一个库的所有API头添加到第二个的CMakeLists.txt中的最佳方法是什么?
【问题讨论】:
标签: api include cmake subdirectory
在目标本身中编码包含目录:
该文档是新文档,但 target_include_directories 命令自 CMake 2.8.11 起就存在。与 INTERFACE 或 PUBLIC 选项一起使用。
【讨论】:
完成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 分配给库的目标属性
【讨论】: