C++ 将初始目录设置为cmake中每个子文件夹的包含的起点

C++ 将初始目录设置为cmake中每个子文件夹的包含的起点,c++,cmake,C++,Cmake,假设我的目录结构如下所示: -file1.hpp -file1.cpp -file2.hpp -file2.cpp -CMakeLists.txt -dir1 -file3.hpp -file3.cpp -file4.hpp -file4.cpp -dir2 -file5.hpp -file5.cpp -file6.hpp -file6.cpp set(my_SRC ${CMAKE_

假设我的目录结构如下所示:

-file1.hpp
-file1.cpp
-file2.hpp
-file2.cpp
-CMakeLists.txt
-dir1
    -file3.hpp
    -file3.cpp
    -file4.hpp
    -file4.cpp
    -dir2
        -file5.hpp
        -file5.cpp
        -file6.hpp
        -file6.cpp
set(my_SRC
    ${CMAKE_CURRENT_LIST_DIR}/file1.cpp
    ${CMAKE_CURRENT_LIST_DIR}/file2.cpp
    ${CMAKE_CURRENT_LIST_DIR}/dir1/file3.cpp
    ${CMAKE_CURRENT_LIST_DIR}/dir1/file4.cpp
    ${CMAKE_CURRENT_LIST_DIR}/dir1/dir2/file5.cpp
    ${CMAKE_CURRENT_LIST_DIR}/dir1/dir2/file6.cpp
)
在第一个目录中只使用一个CMakeLists.txt是否可以包含始终从初始目录开始的文件?我的意思是:

file1.cpp:

#include "file1.hpp"
#include "dir1/file3.hpp"
#include "dir1/dir2/file5.hpp"

#include "file2.hpp"
file3.cpp:

#include "file1.hpp"
#include "dir1/file3.hpp"
#include "dir1/dir2/file5.hpp"

#include "dir1/file4.hpp"
文件5.cpp:

#include "file1.hpp"
#include "dir1/file3.hpp"
#include "dir1/dir2/file5.hpp"

#include "dir1/dir2/file6.hpp"
另外,我当前的CMakeLists.txt设置如下:

-file1.hpp
-file1.cpp
-file2.hpp
-file2.cpp
-CMakeLists.txt
-dir1
    -file3.hpp
    -file3.cpp
    -file4.hpp
    -file4.cpp
    -dir2
        -file5.hpp
        -file5.cpp
        -file6.hpp
        -file6.cpp
set(my_SRC
    ${CMAKE_CURRENT_LIST_DIR}/file1.cpp
    ${CMAKE_CURRENT_LIST_DIR}/file2.cpp
    ${CMAKE_CURRENT_LIST_DIR}/dir1/file3.cpp
    ${CMAKE_CURRENT_LIST_DIR}/dir1/file4.cpp
    ${CMAKE_CURRENT_LIST_DIR}/dir1/dir2/file5.cpp
    ${CMAKE_CURRENT_LIST_DIR}/dir1/dir2/file6.cpp
)

包含项目的根目录有什么问题?例如,
include_目录(${CMAKE_CURRENT_SOURCE_DIR})
@Tsyvarev在dir1/file3.hpp编译时失败
没有这样的文件#include“dir1/file4.hpp”
。它适用于
#include“file4.hpp”
,但我想提供主目录的完整路径,因为我有这样做的所有项目。您是否从顶级
CMakeLists.txt
调用
include\u目录(${CMAKE\u CURRENT\u SOURCE\u DIR})
?在这种情况下,CMake应该包括顶级目录,并且应该找到
dir1/file4.hpp
。我将主CMake文件放在一个目录下。当我添加
${CMAKE\u CURRENT\u SOURCE\u DIR}/src
时,它起作用了。谢谢,问题解决了。