在C+中包含来自不同目录的标题+; 我即将开始为我的博士写C++代码。到目前为止,我一直使用小代码。一个目录中的所有文件(源和头)

在C+中包含来自不同目录的标题+; 我即将开始为我的博士写C++代码。到目前为止,我一直使用小代码。一个目录中的所有文件(源和头),c++,include,header-files,include-path,C++,Include,Header Files,Include Path,因为我想写一个更有条理的代码,所以我将把文件放在不同的目录中 那么,包含文件的正确方式是什么呢?我应该用像这样的东西吗 #include "../../folder/file.hpp" 看起来不太干净。如果包含是这样做的,那么代码是否可以移植到Windows 代码是否可移植到Windows 我看不出有什么理由不这样做,只要你先修改指令的语法。我目前没有要测试的窗口,但这是一个有效的路径 但是,我建议避免使用父目录包含路径。相反,指定一个目录作为编译器的一个包含目录,将所有的头放在子目录中,并包

因为我想写一个更有条理的代码,所以我将把文件放在不同的目录中

那么,包含文件的正确方式是什么呢?我应该用像这样的东西吗

#include "../../folder/file.hpp"
看起来不太干净。如果包含是这样做的,那么代码是否可以移植到Windows

代码是否可移植到Windows

我看不出有什么理由不这样做,只要你先修改指令的语法。我目前没有要测试的窗口,但这是一个有效的路径


但是,我建议避免使用父目录包含路径。相反,指定一个目录作为编译器的一个包含目录,将所有的头放在子目录中,并包含一个相对于包含目录的路径。

我会考虑<代码>…/<代码> <代码> >包含< /Calp> s,这是混淆、危险和坏的样式。(我只在很少有其他人能看到的特定情况下使用它。)一般来说,对于具有许多源代码文件、存储在多个子目录中的大型项目,我更喜欢基本的“总体”包含目录(用作包含路径、编译器参数。
-I
)和
#包括与此相关的路径。投入一些时间建立适当的基础设施进行构建。类似于CMake或Bazel的东西将允许您使用自己的编译标志和文件集定义子组件,并定义如何将这些子组件连接到代码库的其余部分。如果做得好,就不必手动设置include路径。例如,请参阅和相关的窗口,
#include
s中的
/
s很好。Windows C++编译器也可以读取这个信息,正如你提到的,必须保持代码的可移植性。尝试这样做,看看你如何走(引用的位置正确)。在我自己的项目中,我倾向于对库include使用-I,对标题使用“.”等指令。但这是一种观点,其他人可能有其他想法。正如@Botje所说,学习CMake或某种构建系统。如果你觉得很难接受,我建议你调查一下克莱恩。Clion是为C/C++设计的思想。它支持CMake并将其添加到新项目中。在Clion中开始您的项目,并慢慢找到通往CMake和构建系统的道路。