首页 > 解决方案 > 使标题看起来像是在不同的文件夹中

问题描述

所以我有一个精心组织的项目,它引用了其他项目的标题,如下所示:

#include <GeographicLib/Geocentric.hpp>

事情是:

有没有办法包含一个文件夹CMakeLists.txt(CLion 使用的标准)以使该.hpp文件像在该GeographicLib文件夹中一样可引用,而无需移动文件或更改实际代码?

编辑:(文件.hpp在一个文件夹中,如../other_proj/src/geolib

标签: c++includeclioninclude-path

解决方案


一种可能的方法如下:创建一个虚拟目标库(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}>)

推荐阅读