Qt 发布程序时,如何添加编译时间信息

方法一 (最佳实例★★★)

编译器 Qt Creator  / visual studio Community 2014

希望使用 __DATE__ 与 __TIME__ 中的日期与时间 

在版本号信息加上编译日期、编译时间添加到程序对应界面上

static const QDateTime datetime buildDateTime()
{
    const QString datetime = QStringLiteral("%1 %2").arg( __DATE__ ).arg( __TIME__ ) ;
    return QLocale(QLocale::English).toDateTime( datetime.simplified() , "MMM d yyyy hh:mm:ss " );

}

注意 :QStringLiteral 在编译时创建,QString 是动态创建的

本文章支持 日 为单个数字情形,即:Nov 1 可能在其他人博客文章中的例子无法正确解析。

问题的提出

在发布 Qt 程序时,存在一个问题,如果包含 “__TIME__” 的源文件没有修改过,编译时,编译工具并不会再次编译这个源文件,从而导致发布日期不会自动更新。

解决方法

需要每一次都重新编译,编译时间才能更新。
所以,在上面的代码在文件编译成功后就不会再变化了,这样的编译时间和exe的时间是有可能相差很大的。
通过在pro文件中,每次编译成功后,将对应的 .o文件给删除,这样下一次编译都是重新编译。
.o 文件 就是放上面代码的文件的名称。例如我的文件是versioninfo.cpp中,我每次都删除 versioninfo.o* 文件(注意 windows 后缀有obj)
具体pro 中添加如下:

#删除文件
defineTest(delFile) {
    file = $$1
    # 替换Windows源路径中的斜杠
    win32:file ~= s,/,\\,g
    # 删除命令
    QMAKE_POST_LINK += $$QMAKE_DEL_FILE $$shell_quote($$file)  $$escape_expand(\\n\\t)
    export(QMAKE_POST_LINK)
}
#删除文件,实现每次编译都会更新编译时间

delFile($$OUT_PWD/debug/versioninfo.o*)

以上名称中,不要随便修改defineTest 中的Test. 相关逻辑已经经过测试ok

原理

       编译时候生成exe需要所有的obj文件,如没有,将导致重新编译对应的cpp文件

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值