提问人:0x52616A657368 提问时间:10/19/2021 更新时间:10/19/2021 访问量:57
CMAKE 保留标头包含的目录路径,来自仅标头构建的库
CMAKE retain dir path for header includes from a header only built library
问:
我正在尝试通过将所有标头放在一个单独的 cmake 标头项目中来重组我的 CMAKE 项目,并使用 target_link_libraries 将其添加到我的源 cmake 项目中。
是否可以在 cpp 源文件中包含标题时保留文件夹路径。
接口库中的头文件也应该能够使用头文件文件夹名称从不同目录(在同一 cmake 接口项目中)访问其他头文件。
预期
#include "A/A.hpp"
#include "AGen/AGen.hpp"
#include "json/json.hpp"
当前工作 IMPL
#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})
此外,还可以将所有必需的包含文件复制到构建目录中,以便在其他计算机上安装时可以复制/发布这些文件。
答: 暂无答案
评论
#include "AGen/AGen.hpp"
include
target_include_directories
include/AGen
project_includes_internal