c++ - 使标题看起来像是在不同的文件夹中
问题描述
所以我有一个精心组织的项目,它引用了其他项目的标题,如下所示:
#include <GeographicLib/Geocentric.hpp>
事情是:
- 没有
GeographicLib
文件夹 - 该项目确实与
make
- 当我尝试在 CLion 中导入它时,它不会编译,因为它抱怨缺少标头
有没有办法包含一个文件夹CMakeLists.txt
(CLion 使用的标准)以使该.hpp
文件像在该GeographicLib
文件夹中一样可引用,而无需移动文件或更改实际代码?
编辑:(文件.hpp
在一个文件夹中,如../other_proj/src/geolib
)
解决方案
一种可能的方法如下:创建一个虚拟目标库(grouped_includes
如下)并将其链接到所有其他目标(使用target_link_libraries(target grouped_includes)
)
execute_process(
COMMAND ${CMAKE_COMMAND} -E create_symlink
"${CMAKE_SOURCE_DIR}/other_proj/src/geolib"
"${CMAKE_CURRENT_BINARY_DIR}/GeographicLib")
add_library(grouped_includes INTERFACE)
target_include_directories(grouped_includes INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>)
推荐阅读
- webpack-dev-server - webpack-dev-server 无法导入静态文件
- python - 直方图、均值、标准差的正态分布,在数组的某个部分内
- javascript - Javascript中的对象和地图对象有什么区别?
- powerbi - DAX - 过滤之前
- r - 使用 R 创建一个 3 路表
- .htaccess - 使用 .htaccess 删除地址栏中最后一个参数后的附加文本
- css - 报纸风格的 div 对齐,带有 flex-wrap,溢出,没有固定的容器大小
- python - 如何导入循环导入
- asp.net - Asp.Net 核心 MVC 区域路由未按预期工作
- html - 为什么我不能在第二种形式的文本框中输入