我正在尝试将构建日期和时间添加到我的应用程序中,以便可以在“关于”页面中显示。
在我的专业文件中,我有:
DEFINES += "BUILDDATE=$$system(date +'%d-%m-%y %T')"
Run Code Online (Sandbox Code Playgroud)
我已经在系统上的终端中尝试了带有格式的日期命令,它工作正常。
在我的来源中:
QString strBldDate(BUILDDATE);
Run Code Online (Sandbox Code Playgroud)
这一切都构建没有错误,当我检查调试器时,strBldDate 为空。
从讨论中我得知我可以在“.pro”文件中使用 message() 来显示例如:
message($$system(date +"'%d-%m-%y %T'"))
Run Code Online (Sandbox Code Playgroud)
这是有效的,当我构建时我得到类似的东西:
Project MESSAGE: 26-06-19 10:34:59
Run Code Online (Sandbox Code Playgroud)
但是我如何使用它来验证定义的内容呢?
message(BUILDDATE)
Run Code Online (Sandbox Code Playgroud)
经过我的上述努力,结果是:
Project MESSAGE: BUILDDATE
Run Code Online (Sandbox Code Playgroud)
实际上,您可以在 GCC 和 MSVC 中使用标准预定义宏来实现此目的。
以下是 GCC 中预定义宏的列表:3.7.1 标准预定义宏
对于 MSVC:预定义宏
代码可能如下所示:
QString datetime = QStringLiteral(__DATE__) + QStringLiteral(" ") + QStringLiteral(__TIME__);
Run Code Online (Sandbox Code Playgroud)
如果您无法使用预定义的宏,请不要在定义中使用空格并用反斜杠引号将其打包,如下所示:
DEFINES += BUILDDATE=\\\"$$system( date "+%d.%m.%Y_%H:%M:%S" )\\\"
strBldDate.replace(QChar('_'), QChar(' '));
Run Code Online (Sandbox Code Playgroud)
编辑: 创建builddatetime.h文件并将其包含在您需要构建版本的任何地方:
#ifndef BUILDDATETIME_H
#define BUILDDATETIME_H
#include <QString>
const QString BUILDV = QStringLiteral(__DATE__ " " __TIME__);
#endif // BUILDDATETIME_H
Run Code Online (Sandbox Code Playgroud)
在您的 .pro 文件中,将builddatetime.h添加到 headers ( HEADERS += builddatetime.h) 以及以下行:
buildtimeTarget.target = builddatetime.h
buildtimeTarget.depends = FORCE
buildtimeTarget.commands = touch $$PWD/builddatetime.h
PRE_TARGETDEPS += builddatetime.h
QMAKE_EXTRA_TARGETS += buildtimeTarget
Run Code Online (Sandbox Code Playgroud)
这将触及builddatetime.h,并且包含此标头的所有 cpp 文件将在每个构建和运行命令上重建。
| 归档时间: |
|
| 查看次数: |
2982 次 |
| 最近记录: |