如何在不扩展的情况下基于 RHIDE 中的环境变量添加包含目录

How to add an include directory based on environment variable in RHIDE without expansion?

本文关键字:RHIDE 环境变量 添加 包含目 扩展 情况下      更新时间:2023-10-16

REDHAWK IDE 在创建Makefile.am.ide文件时坚持扩展环境变量。例如,假设$SRC_ROOT /srcpath,我在项目的 C/C++ 部分的Path and Symbols窗口中添加一个包含路径,如下所示:

${env_var:SRC_ROOT}/include

生成的Makefile.am.ide文件包含:

rehawk_INCLUDES_auto = -I/srcpath/include

当我真正想要的是:

rehawk_INCLUDES_auto = -I$(SRC_ROOT)/include

这很重要,因为此文件由具有不同值的其他团队成员使用$SRC_ROOT 。目前我们必须将包含路径放在 Makefile.am 中,但是 IDE 在目录中看不到头文件,并且看到缺少的头文件中引用的代码的错误。

有没有办法获得RHIDE,在生成Makefile.am.ide时不扩展环境变量?

不完全是您要找的,但您可以随时通过禁用 REDHAWK C++自动包含构建器来禁用 Makefile.am.ide 的自动更新。这位于"构建器"部分的项目属性中。

这将允许您添加到 Eclipse 的路径和符号部分,而无需自动包含构建器拾取它并将其添加到您的 Makefile.am.ide 中。

如果您选择禁用此构建器,则需要自行管理新源文件的添加。

> Youssef的答案还不错,但我想出了一种不同的方法来解决这个问题。在 Makefile.am 中,将 redhawk_INCLUDES_auto 值覆盖为 I 是什么:

include $(srcdir)/Makefile.am.ide
#Override the value from Makefile.am.ide that may be wrong!
override redhawk_INCLUDES_auto = -I$(SRC_ROOT)/include

这要求更新 IDE 和Makefile.am文件中的任何自定义包含目录,但管理源文件仍然是自动的。

它仍然存在一个问题,即Makefile.am.ide文件的内容对于其他开发人员来说会有所不同,这使版本控制复杂化。所以我不认为这是这个问题的完整答案。