gpt4 book ai didi

c++ - Qt, linux, 添加构建日期和时间定义

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:02:40 24 4
gpt4 key购买 nike

我正在尝试将构建日期和时间放入我的应用程序中,以便我可以在“关于”页面中显示。

在我的 pro 文件中我有:

    DEFINES += "BUILDDATE=$$system(date +'%d-%m-%y %T')"

我已经在系统的终端中尝试使用格式的日期命令,它工作正常。

在我的来源中:

    QString strBldDate(BUILDDATE);

这一切都没有错误地构建,当我检查调试器时,strBldDate 是空的。

从讨论中得知我可以在“.pro”文件中使用 message() 来显示例如:

    message($$system(date +"'%d-%m-%y %T'"))

这有效,当我构建时,我得到类似的东西:

    Project MESSAGE: 26-06-19 10:34:59

但是我怎样才能使用它来验证定义的内容呢?

    message(BUILDDATE)

经过我的上述努力,结果是:

    Project MESSAGE: BUILDDATE

最佳答案

您实际上可以在 GCC 和 MSVC 中为此使用标准的预定义宏。

这是 GCC 中的预定义宏列表:3.7.1 Standard Predefined Macros

对于 MSVC:Predefined Macros

代码可能是这样的:

QString datetime = QStringLiteral(__DATE__) + QStringLiteral(" ") + QStringLiteral(__TIME__);

如果你不能使用预定义的宏,就不要在定义中使用空格,而是用反斜杠引号包起来,像这样:

DEFINES += BUILDDATE=\\\"$$system( date "+%d.%m.%Y_%H:%M:%S" )\\\"

strBldDate.replace(QChar('_'), QChar(' '));

编辑:创建 builddatetime.h 文件并将其包含在您需要构建版本的任何地方:

#ifndef BUILDDATETIME_H
#define BUILDDATETIME_H

#include <QString>
const QString BUILDV = QStringLiteral(__DATE__ " " __TIME__);

#endif // BUILDDATETIME_H

在您的 .pro 文件中,将 builddatetime.h 添加到 header (HEADERS += builddatetime.h)以及以下几行:

buildtimeTarget.target = builddatetime.h
buildtimeTarget.depends = FORCE
buildtimeTarget.commands = touch $$PWD/builddatetime.h
PRE_TARGETDEPS += builddatetime.h
QMAKE_EXTRA_TARGETS += buildtimeTarget

这将触及 builddatetime.h 并且包含此 header 的所有 cpp 文件将在每个构建和运行命令中重建。

关于c++ - Qt, linux, 添加构建日期和时间定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56768466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com