我被要求对一些在 IAR Embedded Workbench v3.3 上编写的软件进行一个小修改
我已将原始源文件从一台旧机器复制到我为该任务分配的机器上。
目前我只是想编译软件。我花了一段时间才意识到,或者至少我认为我已经意识到,它无法打开各种头文件的原因是,令人难以置信的是,所有包含路径都是绝对的,而不是相对的。
因此,我将所有路径更改为 $PROJ_DIR$ 相对路径,但随后开始获取无法打开的不同文件。然后意识到他们给我的机器恰好与我使用的原始机器具有非常相似的目录结构,并且令人惊讶的是,我正在使用的这台机器的目录结构中有很多与机器上相同的文件最初用于编译代码。
然后我想,好吧,我只需选择一个它提示没有找到并在“预处理器”选项卡中找到该目录的绝对路径的头文件来检查我的相对路径是否正确我正在使用的机器包含它想要的头文件。但是,仍然找不到头文件!
最后,我在c文件中放置了一个绝对路径来指向所需的头文件。
#include "C:\absolute__Path\stdtyp.h"
它编译了。
确认:
放入C:\absolute__Path
在项目中|选项| C/C++ 编译器 |如果我只有以下内容,预处理器选项卡将无法工作:
#include "stdtyp.h"
在c文件中。
我过去使用过 IAR - 没有那么多 - 但我已经使用过它,并且我确信这就是您设置包含目录的地方。那么,我是否错了,或者是否有其他东西会覆盖如上所述的预处理器选项卡中的该路径?
编辑:我没有错,在睡过之后,我决定创建一个包含随机目录、子目录和头文件的新项目。果然,如果我在预处理器选项卡中设置并删除 $PROJ_DIR$ 引用路径,新项目会编译,然后不会。所以,一定有什么东西,大概是在 ewp 文件中,让它变得无聊。
最佳答案
事实证明,您可以逐个文件地覆盖单个文件的路径。因此,恶意文件的路径被覆盖并具有绝对路径。
右键单击 EW 中的文件并选择“选项”。
对于大多数文件来说,这会显示大量灰色框。我没能彻底检查所有文件。我随机检查的几个文件是灰色的,但有些文件的属性在这里被覆盖,并在那里放置了不同的(绝对)路径。
至少现在可以在使用相对路径的计算机之间轻松复制该项目。
关于IAR C 预处理器包含目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49493211/