OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2678|回复: 1

工程编译时间插入批处理,由IDE调用生成

[复制链接]

18

主题

422

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1139
金钱
1139
注册时间
2014-5-24
在线时间
116 小时
发表于 2016-1-21 16:22:28 | 显示全部楼层 |阅读模式
用于插入编译时间常量
参数列表:文件路径(绝对或相对)、检索字符、源文件编码
执行后该文件匹配的行的被改为:
const char COMPILE_TIME[] = "2016-01-21 15:45";


QQ截图20160121162122.png

InsertCompileTime.rar (4.12 MB, 下载次数: 79)
I See Fire.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.  只给方向,不妨碍思考
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

180

帖子

1

精华

高级会员

Rank: 4

积分
616
金钱
616
注册时间
2015-6-29
在线时间
101 小时
发表于 2016-1-21 21:20:02 | 显示全部楼层
从阿mo论坛里搜到的,这个直接就可以由编译器提供编译时间:
[mw_shl_code=c,true]用到的宏定义:
#define BUILD_YEAR_CH0 (__DATE__[ 7 ])
#define BUILD_YEAR_CH1 (__DATE__[ 8 ])
#define BUILD_YEAR_CH2 (__DATE__[ 9 ])
#define BUILD_YEAR_CH3 (__DATE__[10 ])

#define BUILD_MONTH_IS_JAN (__DATE__[ 0 ] == 'J' && __DATE__[ 1 ] == 'a' && __DATE__[ 2 ] == 'n')
#define BUILD_MONTH_IS_FEB (__DATE__[ 0 ] == 'F')
#define BUILD_MONTH_IS_MAR (__DATE__[ 0 ] == 'M' && __DATE__[ 1 ] == 'a' && __DATE__[ 2 ] == 'r')
#define BUILD_MONTH_IS_APR (__DATE__[ 0 ] == 'A' && __DATE__[ 1 ] == 'p')
#define BUILD_MONTH_IS_MAY (__DATE__[ 0 ] == 'M' && __DATE__[ 1 ] == 'a' && __DATE__[ 2 ] == 'y')
#define BUILD_MONTH_IS_JUN (__DATE__[ 0 ] == 'J' && __DATE__[ 1 ] == 'u' && __DATE__[ 2 ] == 'n')
#define BUILD_MONTH_IS_JUL (__DATE__[ 0 ] == 'J' && __DATE__[ 1 ] == 'u' && __DATE__[ 2 ] == 'l')
#define BUILD_MONTH_IS_AUG (__DATE__[ 0 ] == 'A' && __DATE__[ 1 ] == 'u')
#define BUILD_MONTH_IS_SEP (__DATE__[ 0 ] == 'S')
#define BUILD_MONTH_IS_OCT (__DATE__[ 0 ] == 'O')
#define BUILD_MONTH_IS_NOV (__DATE__[ 0 ] == 'N')
#define BUILD_MONTH_IS_DEC (__DATE__[ 0 ] == 'D')


#define BUILD_MONTH_CH0 \
        ((BUILD_MONTH_IS_OCT || BUILD_MONTH_IS_NOV || BUILD_MONTH_IS_DEC) ? '1' : '0')

#define BUILD_MONTH_CH1 \
        ( \
          ( BUILD_MONTH_IS_JAN ) ? '1' : \
          ( BUILD_MONTH_IS_FEB ) ? '2' : \
          ( BUILD_MONTH_IS_MAR ) ? '3' : \
          ( BUILD_MONTH_IS_APR ) ? '4' : \
          ( BUILD_MONTH_IS_MAY ) ? '5' : \
          ( BUILD_MONTH_IS_JUN ) ? '6' : \
          ( BUILD_MONTH_IS_JUL ) ? '7' : \
          ( BUILD_MONTH_IS_AUG ) ? '8' : \
          ( BUILD_MONTH_IS_SEP ) ? '9' : \
          ( BUILD_MONTH_IS_OCT ) ? '0' : \
          ( BUILD_MONTH_IS_NOV ) ? '1' : \
          ( BUILD_MONTH_IS_DEC ) ? '2' : \
          /* error default */    '?' \
        )

#define BUILD_DAY_CH0 ((__DATE__[ 4 ] >= '0') ? (__DATE__[ 4 ]) : '0')
#define BUILD_DAY_CH1 (__DATE__[ 5 ])


#define BUILD_HOUR_CH0 (__TIME__[ 0 ])
#define BUILD_HOUR_CH1 (__TIME__[ 1 ])

#define BUILD_MIN_CH0 (__TIME__[ 3 ])
#define BUILD_MIN_CH1 (__TIME__[ 4 ])

#define BUILD_SEC_CH0 (__TIME__[ 6 ])
#define BUILD_SEC_CH1 (__TIME__[ 7 ])

使用:
const  char SoftwareVersionInfo[] __at( 0x4011 ) = {'M', 'D', 'S', '0', '2', '0', '.', BUILD_YEAR_CH0, BUILD_YEAR_CH1, BUILD_YEAR_CH2, BUILD_YEAR_CH3, BUILD_MONTH_CH0, BUILD_MONTH_CH1, BUILD_DAY_CH0, BUILD_DAY_CH1, BUILD_HOUR_CH0, BUILD_HOUR_CH1, BUILD_MIN_CH0, BUILD_MIN_CH1, '\0'};

结果:
MDS010.201509221128.bin [/mw_shl_code]

我是菜鸟
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-1 16:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表