我正在尝试通过将所有标头放在单独的 cmake 标头项目中来重组我的 CMAKE 项目,并使用 target_link_libraries 将其添加到我的源 cmake 项目中。
在 cpp 源文件中包含标头时是否可以保留文件夹路径。
接口库中的头文件还应该能够使用头文件夹名称访问来自不同目录(在同一 cmake 接口项目中)的其他头文件。
预期的
#include "A/A.hpp"
#include "AGen/AGen.hpp"
#include "json/json.hpp"
当前工作的实现
#include "A.hpp"
#include "AGen.hpp"
#include "json.hpp"
我的界面cmake配置
set(project_includes_internal
${CMAKE_CURRENT_LIST_DIR}/A
${CMAKE_CURRENT_LIST_DIR}/B
${CMAKE_CURRENT_LIST_DIR}/C
)
set(project_gen_includes
${CMAKE_CURRENT_BINARY_DIR}/include/AGen
${CMAKE_CURRENT_BINARY_DIR}/include/BGen
${CMAKE_CURRENT_BINARY_DIR}/include/CGen
)
set(project_dep_inludes
${CMAKE_HOME_DIRECTORY}/dep/nlohmann/json
)
set(PROJECT_INCLUDES
${project_includes_internal}
${project_gen_includes}
${project_dep_inludes})
add_library(${PROJECT_NAME} INTERFACE)
target_include_directories(${PROJECT_NAME}
INTERFACE
$<BUILD_INTERFACE:${PROJECT_INCLUDES}>
$<INSTALL_INTERFACE:include>
)
我的来源 cmake 配置
add_executable(${PROJECT_NAME}-bin ${PROJECT_TARGET_SOURCES})
target_link_libraries(${PROJECT_NAME}-bin
PUBLIC
${ACTIVATION_PROJECT_INCLUDES_NAME})
也可以将所有必需的包含文件复制到构建目录中,以便在其他机器上安装时可以复制/发布这些文件。