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