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
时,它起作用了。谢谢,问题解决了。