Как я могу передать вывод команды в виде флага компилятора через файл проекта Qt? - PullRequest
2 голосов
/ 12 мая 2009

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

Я могу сделать это, добавив следующий флаг компилятора: -DAPP_VERSION = "$ (git description HEAD)"

Но так как проект основан на qmake, я хотел бы найти способ поместить это в файл проекта Qt. Это возможно? И если да, то как?

редактирование: Я попытался добавить следующее:

QMAKE_CXXFLAGS + = -DAPP_VERSION = "$ (git description HEAD)"

Но это просто дало мне "-DAPP_VERSION =", поэтому я полагаю, что мне нужно использовать некоторые escape-символы, но я не знаю, какие и где. : /

Ответы [ 2 ]

5 голосов
/ 12 мая 2009

Проблема решена благодаря этой ссылке: http://robertcarlsen.net/blog/2009/01/06/qmake-xcode-bug-258

Вот пример проекта qt, который я использовал для его тестирования: qt.pro:

######################################################################
# Automatically generated by qmake (2.01a) Thu Apr 2 16:23:05 2009
######################################################################

TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .

# Input
SOURCES += qt.cpp

QMAKE_CXXFLAGS += -DAPP_DATE=\\\"`date +'\"%a_%b_%d,_%Y\"'`\\\"
QMAKE_CXXFLAGS += -DAPP_VERSION=\\\"`git describe`\\\"

qt.cpp:

#ifndef APP_DATE
#define APP_DATE "1/1/1970"
#endif

#ifndef APP_VERSION
#define APP_VERSION "local-dev"
#endif

#include <QApplication>
#include <QLabel>
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QString version = QString("version ") + APP_VERSION + ' ' + APP_DATE;
    QLabel *label = new QLabel(version);
    label->show();
    return app.exec();
}
1 голос
/ 17 декабря 2014

Вы также можете использовать

QMAKE_CXXFLAGS += -DAPP_VERSION=\\\"$$system(git describe HEAD)\\\"

Это выполнит команду git только один раз во время запуска qmake, что может ускорить компиляцию для больших проектов. Однако вы должны обязательно запустить qmake и make clean после извлечения из хранилища.

...