你好,
我正在尝试实现一些自动版本,这样我就不必手动检查我是否跟上了我的软件版本。为此,我认为我应该动态地设置一个带有当前日期和时间的预处理器宏。
在SmartSnippets,我可以去设置,C/ c++ Build->交叉ARM C编译器->预处理器设置,然后定义符号(- d)添加我想要的。我在这里的确切语法是:BLACKORCA_SW_VERSION="\"C$(date +"%Y.% M .%d.%H.%M")\"",意图是"date"调用shell命令来获取当前日期,随后按我想要的方式格式化。我还想要"C"前缀。
我已经用gcc本地测试了这个语法,它工作得很好。当我试图绕过SmartSnippets,从终端(调用适当的交叉编译器而不是gcc)和项目构建文件夹手动调用“make”时,我可以看到输出正确解析为当前日期和时间。但是,当我经过SmartSnippets和构建配置,宏定义是正确(没有编译器错误),但当我flash董事会(我有一个开发板和一个定制的板),宏最终被解决“C”,剩下的字符串不出现。
我知道这是一个非常特定的请求,但如果宏在本地使用gcc时正确解析,并且在从终端手动调用make时使用arm-none-eabi-gcc时正确解析,那么可能有一些SmartSnippets/Eclipse相关的东西需要我的帮助。
任何建议吗?如果有一个更简单的方法来实现这个自动版本,请告诉我。谢谢。
仅仅是
设备:
嗨Merigh,
谢谢你的在线问题。让我查一下,然后给你答复。
谢谢,PM_Dialog
你好再次,
另一个选项可能是使用智能代码片段项目设置中的预构建步骤。目前该字段由“生成链接器脚本”命令填充。有没有一种简单的方法可以简单地添加预构建步骤?或者我只是在小框中添加文本?然后,我可以从那里修改sw_version.h文件,没有问题。我认为。
谢谢你的帮助,
米
另一个更新,
在预构建步骤中添加原始文本效果很好。现在我有另一个相关的问题:
Dialog的SUOTA 1.1规范要求版本字符串为16个字符长吗?或者我能把它改成18个吗?那是因为我想要CYYYY.MM.DD.HH.mm格式。
谢谢,米