CMake:设置名称空间包含 目录结构 CMakeLists.txt

CMake:设置名称空间包含 目录结构 CMakeLists.txt,cmake,Cmake,我想引用模块2中的模块1,如 #include <XYZ/module_2.h> #包括 我读了这篇文章。但是这个答案对我没有多大用处 如果有一种方法可以做到这一点而不改变目录结构,那就更好了。实现这一点最简单的方法实际上是改变目录结构,但只改变include目录的结构 所以不是 -project (XYZ) --include ---library.h ---module_1.h ---module_2.h --src ---library.cc ---module_1.cc

我想引用模块2中的模块1,如

#include <XYZ/module_2.h>
#包括
我读了这篇文章。但是这个答案对我没有多大用处


如果有一种方法可以做到这一点而不改变目录结构,那就更好了。

实现这一点最简单的方法实际上是改变目录结构,但只改变include目录的结构

所以不是

-project (XYZ)
--include
---library.h
---module_1.h
---module_2.h
--src
---library.cc
---module_1.cc
---module_2.cc
--CMakeLists.txt
你可以做:

-project (XYZ)
--include
---XYZ
----library.h
----module_1.h
----module_2.h
--src
---library.cc
---module_1.cc
---module_2.cc
--CMakeLists.txt
然后,不要使用
include\u目录(${PROJECT\u SOURCE\u DIR}/include)
而是使用:

target_include_directories(${PROJECT_NAME} 
    PUBLIC 
      ${CMAKE_CURRENT_SOURCE_DIR}/include 
    PRIVATE 
      src)

有一种方法可以做到这一点,而无需更改目录结构。
-不,没有这种方法。与我对参考问题的评论相同。
-project (XYZ)
--include
---XYZ
----library.h
----module_1.h
----module_2.h
--src
---library.cc
---module_1.cc
---module_2.cc
--CMakeLists.txt
target_include_directories(${PROJECT_NAME} 
    PUBLIC 
      ${CMAKE_CURRENT_SOURCE_DIR}/include 
    PRIVATE 
      src)