我想知道是否有一个宏或一种简单的方法让编译器每次编译时都会增加代码的主要版本,次要版本或修订版本?
顺便说一句,我正在使用ARM编译器和Keil的uVision。
答案 0 :(得分:2)
设置版本不是编译器主题。这应该与源代码控制/版本控制系统(如cvs / svn / git或其他)一起完成。您的构建ID应连接到源代码数据库的内容,以从版本控制系统的检出中获得可重现的构建。或者,如果您的代码尚未提交到您的数据库,则应提供并编译脏标记,以便软件用户有机会看到这不是受控版本。
简单地计算变量中的值可以通过Makefile或构建前和构建后的指令来完成,这些指令取决于使用的IDE。对不起,对于keil我没有经验...
答案 1 :(得分:0)
定义构建后事件以运行小型外部程序。该程序必须修改特定的.h文件。在头文件中定义宏,如VER_MAJOR,VER_MINOR,VER_BUILD。日期/时间字符串也可以更新。我使用这种方法,可以按照自己的意愿控制版本号。
答案 2 :(得分:0)
IMO,您不需要这样做,尤其是每次编译代码时都会增加一个数字。
在头文件中手动设置主修订版和次修订版;你不应该经常这样做。
内部版本号应仅与源代码管理修订版号相关(即您应该能够在源代码管理下构建和重建任何修订版本。)
想象一下,如果你是一个由5个开发人员组成的团队,每个人都在他们身边构建和重建什么是实际的构建号? 他们都更新头文件? 谁负责拥有该头文件?
答案 3 :(得分:0)
某些编译器确实支持“post build”等功能,它在编译后运行您选择的程序,但如果您的程序是从多个源文件构建的,那将会非常棘手。但并非所有编译器都这样做。
出于这个原因,我实际上不会通过编译器来做这种事情。我会在构建脚本(例如makefile)中执行此操作,或者在IDE中配置构建设置。
假设您正在使用make
或类似内容,请添加一个目标,例如setversion
(您选择名称),该目标运行程序,该程序会修改指定版本号组件的头文件。因此,输入make setversion
会更新您的版本号。
可选地,该目标还可以 - 在更新版本号后 - 执行make clean
(即删除所有目标文件和可执行文件)和make all
(重新编译和链接所有内容)。
我还建议在每次重新编译后避免更改版本号。想象一下,你正在忙着测试和调试代码,并经历了几次重建周期。您是否真的希望每次重新编译一个源文件时都更新版本号?如果您选择,可以这样做,但会使每次重建都需要更长的时间(并且,在包含多个源文件的项目中),如果您想保留增量构建的功能,则需要注意。