Qt, linux, добавление даты и времени сборки - PullRequest
2 голосов
/ 26 июня 2019

Я пытаюсь ввести дату и время сборки в свое приложение, чтобы я мог отобразить их на странице about.

В моем файле Pro есть:

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

I 'мы попробовали команду date с форматом в терминале в системе, и она отлично работает.

В моем источнике:

    QString strBldDate(BUILDDATE);

Это все без ошибок, когда я проверяю в отладчике, strBldDate пусто.

Из обсуждений, которые мне сказали, я могу использовать message () в файле ".pro", чтобы показать, например:

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

Это работает, и когда я собираюсь, я получаю что-то вроде:

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

Но как я могу использовать это же для проверки содержания определения?

    message(BUILDDATE)

После моих усилий, приведенных выше, просто получается:

    Project MESSAGE: BUILDDATE

1 Ответ

1 голос
/ 26 июня 2019

Вы могли бы просто использовать стандартные предопределенные макросы для этого в GCC и в MSVC.

Вот список предопределенных макросов в GCC: 3.7.1 Стандартные предопределенные макросы

И для MSVC: Предопределенные макросы

Код может выглядеть примерно так:

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

Если вы не можете использовать предопределенные макросы, просто не используйте пустые пробелы в определениях и упаковывайте их в кавычки с обратной косой чертой, например:

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

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

EDIT: Создайте файл builddatetime.h и включайте его везде, где вам нужна версия сборки:

#ifndef BUILDDATETIME_H
#define BUILDDATETIME_H

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

#endif // BUILDDATETIME_H

В вашем файле .pro добавьте builddatetime.h к заголовкам (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 , и все файлы cpp, содержащие этот заголовок, будут перестраиваться при каждой команде сборки и запуска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...