我要维护的构建机器服务器正在使用Makefiles基础结构。

作为该基础架构的一部分,我正在从构建机器向Makefile传递一些参数(例如:用户,构建服务器名称以及仅在为特定项目进行编译时才知道的各种构建变量)。

其中一些变量使用gcc -D指令聚合到代码中

-DSOME_VAR=VAL

现在,我被要求将Iar Project迁移到我的构建系统中。这本身不是问题,只有我找不到使用iarbuild.exe命令行工具引入预处理器定义的任何方法。

我想我可以在编译之前使用现有的H文件并对其进行编辑(例如,使用sed),但这是一个丑陋的技巧,我宁愿避免。

如何通过IAR正确实现这一目标?

最佳答案

据我了解,iarbuild不支持直接传递此类参数。

IAR支持建议了两种可能性,两种可能性都对我有用(使用7.40.2):

1)使用预包含文件

  • 转到项目->选项-> C / C++编译器->预处理程序
  • 添加一个预包含文件(例如preinclude.h)
  • 现在,让您的构建脚本在启动iarbuild
  • 之前生成该预包含文件

    2)使用“定义的符号”
  • 转到项目->选项-> C / C++编译器->预处理程序
  • 在“定义的符号”中添加一个选项,并使用环境变量,例如"SOMEVAR=$_SOMEVAL_$"
  • 在cmd行上,设置环境变量,例如“设置SOMEVAR = myvalue”
  • 运行iarbuild

  • 第二种方法略显优雅,但是如果未设置环境变量,构建将失败,因此我可能会选择第一种方法。

    关于c - 相当于iarbuild.exe的GCC -D,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27628435/

    10-12 00:31