我的项目的物理文件结构类似于:

  • 源文件夹
  • 引擎
    • 文件夹1
    • 文件夹2

ETC。

我在“Source”中有一些文件,在“Engine”中有一些文件,在“Engine/Folder1”中有一些文件,等等。

在我的项目中,我进入了“所有配置”->“源目录”,包括源、引擎、引擎/文件夹2等。但是,当我尝试包含“Foo.h”或其他文件夹中的任何内容时,我仍然收到无法找到文件的错误。有没有办法做到这一点,这样我就不必在所有内容前面添加 ../Folder1/ ?

有帮助吗?

解决方案

有没有办法做到这一点,这样我就不必在所有内容前面添加 ../Folder1/ ?

就在这里。答案取决于几个因素,我确信我会错过一些因素。

检查以下内容:

  • 在编译器设置中,检查“C/C++”下的“附加包含”
  • 还要检查“VC++”中“包含目录”的值
  • 检查“C/C++/预处理器”中“忽略标准包含路径”的设置
  • 检查你的预编译头设置
  • 检查源文件中的“#define”/“#undef”和编译器设置
  • 检查您的项目可能正在使用或继承的属性表

如果您使用“foo.h”(而不是 <foo.h>),预处理器将首先查找项目特定文件夹,最后查找 IDE 特定文件夹。如果您使用 <foo.h> 它首先在标准包含文件夹中启动,例如标准运行时库所需的那些。

当文件使用“../foo.h”时,它是相对于包含该文件的文件位置的路径。可能存在棘手的例外情况。

还有很多因素会影响预处理器如何找到其包含路径。如果您不确定预处理器正在对特定文件执行什么操作,可以通过在预处理器设置中打开“预处理到文件”来使预处理器输出可见。该文件向您显示预处理器完成之后和编译器开始工作之前文件的源代码。

随着更多的经验,特别是对文件夹/项目结构以及如何包含文件的明确策略,整个事情变得更加容易。例如,确保将“#pragma Once”作为每个包含文件中的第一个非注释行。

我希望这能为您接下来的步骤提供一些想法。祝你好运!

其他提示

我认为这是一个很好的做法:

  • 当包含的文件路径不需要使用“..”时,使用相对路径
  • 当需要使用“..”时,请使用绝对路径(即相对于源文件的根文件夹)。

要使绝对路径起作用,请将根源文件夹添加到包含目录列表中(相对于项目的文件位置)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top