在 Qt 中指定始终编译某个源文件

问题的提出

在发布 Qt 程序时,在版本号中,可能想要附上发布日期,这时,可以用 C++ 中的预定义宏 “__TIME__”,但是,存在一个问题,如果包含 “__TIME__” 的源文件没有修改过,编译时,编译工具并不会再次编译这个源文件,从而导致发布日期不会自动更新。

解决方法

下面的方法在 Qt 5.12.12 win10 中试验通过。

假设,源文件 Version.cpp 中,有一个函数返回当前软件的版本号,如下所示,“__TIME__” 用于在版本号后面附上发布日期:

std::string getVersion()
{
    return std::string("V1.0.0") + "_" + __TIME__;
}

在 Qt 工程中的 “.pro” 文件中,加入如下代码:

CONFIG(debug, debug|release) {
    MYCONFIG = debug
} else {
    MYCONFIG = release
}

myTarget.target = $$PWD/Version.cpp
myTarget.commands = $(CXX) $(CXXFLAGS) -c $$PWD/Version.cpp -o $$OUT_PWD/$$MYCONFIG/Version.o
myTarget.depends = FORCE
QMAKE_EXTRA_TARGETS += myTarget

PRE_TARGETDEPS += $$PWD/Version.cpp

这样,在每次编译时,无论 Version.cpp 是否经过修改,都会无条件编译 Version.cpp 源文件,从而实现自动更新编译日期

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值