问题描述
我正在为五个不同的嵌入式控制器开发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 (将#修改为@)