Wie kann ich die Ausgabe eines Befehls als Compiler-Flag durch eine Qt-Projektdatei übergeben?

StackOverflow https://stackoverflow.com/questions/852437

  •  21-08-2019
  •  | 
  •  

Frage

Ich versuche, die Ausgabe von „git beschreiben“, um die über Fenster meiner Anwendung hinzuzufügen, so ist es einfacher, herauszufinden, welche Version der Anwendung Menschen nutzen.

Ich kann es tun, indem Sie den folgenden Compiler-Flag hinzu: -DAPP_VERSION = "$ (git HEAD beschreiben)"

Aber da das Projekt auf Qmake basiert, würde Ich mag einen Weg finden, diese in die Qt-Projektdatei zu setzen. Ist das möglich? Und wenn ja, wie?

edit: Ich habe versucht, den folgenden:

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

Aber es gab mir nur „-DAPP_VERSION =“, so nehme ich an ich habe einige Escape-Zeichen verwenden, aber ich weiß nicht, welche und wo. : /

War es hilfreich?

Lösung

Problem gelöst durch diesen Link: http: // robertcarlsen .net / blog / 2009/01/06 / qmake-Xcode-bug-258

Hier ist ein Beispiel qt Projekt, das ich verwenden, um es zu testen: 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();
}

Andere Tipps

Sie können auch verwenden

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

Dies wird den git Befehl nur einmal während der qmake Lauf durchführen, die Kompilierung für große Projekte könnten beschleunigen. Allerdings müssen Sie sicherstellen, qmake und make clean nach dem Ziehen aus dem Repository ausgeführt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top