我开发了一个由多个共享库组成的项目,并使用CMake构建它。
每个库都是通过add_subdirectory()
构建的。
将第一个库的所有API标头添加到第二个库的CMakeLists.txt的最佳方法是什么?
答案 0 :(得分:7)
对目标本身中的include目录进行编码:
该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