C++ 当所有源代码都没有更改时,代码块如何从查找头文件变为无法找到它们?

C++ 当所有源代码都没有更改时,代码块如何从查找头文件变为无法找到它们?,c++,include,project,codeblocks,ogre3d,C++,Include,Project,Codeblocks,Ogre3d,为什么一个项目能够编译并找到必要的头文件,然后我添加了一行它找不到的,它没有编译,我删除了那一行(代码现在看起来和它第一次编译时完全一样),现在突然它找不到它刚才可以找到的头文件?我没有改变任何文件结构,除了添加一行、删除一行之外,什么都没有改变,一切都被破坏了 我一直遵循Ogre3D教程中的每一条指导,直到构建新的应用程序。一切都很好,第一个教程编译并运行。因此,我决定看看是否可以让a来做同样的事情,但遗憾的是编译器抛出了一个错误:当查看包含“Ogre.h”的行时,没有这样的文件或目录。所以

为什么一个项目能够编译并找到必要的头文件,然后我添加了一行它找不到的,它没有编译,我删除了那一行(代码现在看起来和它第一次编译时完全一样),现在突然它找不到它刚才可以找到的头文件?我没有改变任何文件结构,除了添加一行、删除一行之外,什么都没有改变,一切都被破坏了


我一直遵循Ogre3D教程中的每一条指导,直到构建新的应用程序。一切都很好,第一个教程编译并运行。因此,我决定看看是否可以让a来做同样的事情,但遗憾的是编译器抛出了一个错误:当查看包含“Ogre.h”的行时,没有这样的文件或目录。所以我回到第一个教程的框架,我包含了所有的行,它仍然按照预期编译,然后我决定删除所有源文件和所有内容,我从BaseApplication中获取第一个include指令。h,行是
#include
,我将这一行放在一个文件
main.cpp
中,并尝试编译这一行程序。出现相同的错误,它找不到
OgreCamera.h
!什么

那么,什么是如此特殊,以至于教程框架可以编译,但当我尝试做基本上完全相同的事情时,它抛出了一个适合

更新


更奇怪的事情正在发生。。。我在教程框架的BaseApplication.h文件中添加了一行
#include“Ogre.h”
,它找不到Ogre.h。因此,我删除了这一行并尝试编译程序(不超过10秒前编译的程序),现在它再也找不到
OgreCamera.h
!但我可以说,它在任何形式上都没有改变。现在这是令人发狂的比例混乱

解析头文件的位置不是在代码本身中定义的,而是在IDE和/或code::blocks项目首选项中定义的。这与设置Ogre头文件的搜索目录更相关

如果它在不久前工作,而不是现在,我会怀疑您可能犯了一个简单的错误,比如从调试切换到发布,只在项目属性中配置了调试生成的搜索目录。(单击“生成选项”默认选择“调试”,而不是“所有配置”)。尝试在调试和发布版本中重新添加Ogre目录


Blocks还允许您在常用库的编译器和调试器设置中为IDE全局添加搜索目录。您还可以为Ogre SDK位置创建一个全局变量,以简化添加到每个新项目的过程
(#ogre.include)
,而不是添加完整/相对路径。

我相信我知道我在这里对自己做了什么。。并重新创建了问题

我按照教程进行操作,并按照要求设置了一个应用程序。当我决定复制整个项目时,我遇到了一些其他问题,我已经完成了繁琐的设置工作没有意识到通过简单地复制粘贴目录来复制整个项目并不会带来必要的繁琐设置工作。因此,可能没有注意“目标是最新的。”构建消息,假设它编译了我更改了文件,它没有按照预期编译,然后将它们更改回原始状态,它仍然没有编译,因为它们不再是最新的

我会记住这个。。。很长一段时间