微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用预编译器开关为C项目启用迭代构建?

如何解决如何使用预编译器开关为C项目启用迭代构建?

我正在为五个不同的嵌入式控制器开发C代码。过去,我曾经为每个控制器创建一个单独的项目,但是共享代码量约为98%。因此,我合并了所有项目,并通过预处理程序宏对硬件访问进行了抽象。示例:

编译器:

gcc ... -D FS_CONTROLLER_A=STD_ON

代码

#if FS_CONTROLLER_A == STD_ON
int8_t accesspin = 0;
#else
int8_t accesspin = 1; 
#endif

解决方案可节省大量时间,并且像魅力一样工作。不幸的是,迭代构建不起作用。如果构建控制器A,构建环境'sCons'的决策者将为其构建的每个文件创建一个MD5校验和。当我切换到控制器B时,只有预处理器宏会更改。因此,MD5校验和保持不变,并且决策程序不会检测到任何更改并拒绝重建文件

我可以在sCons中实现并注册一个自定义决策器,但这听起来很麻烦。 已经有解决此问题的方法了吗?如果他们提供本机解决方案,我将毫不犹豫地切换到cMake或Gradle。从我的角度来看,任何解决方案都需要在调用决策程序之前运行预处理器。

PS:我知道Keil Arm IDE附带了此功能,但是我想要并且需要使用自己的构建环境。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。