使标题看起来像它们在其他文件夹中一样

时间:2019-03-01 11:47:48

标签: c++ include clion include-path

所以我有一个花哨组织的项目,它引用了其他项目的标头,如下所示:

#include <GeographicLib/Geocentric.hpp>

问题是:

  • 没有GeographicLib文件夹
  • 项目确实make编译
  • 当我尝试将其导入CLion时,由于抱怨缺少标题而无法编译

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

编辑:../other_proj/src/geolib文件位于{{1}}之类的文件夹中)

1 个答案:

答案 0 :(得分:1)

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