Come posso passare l'output di un comando come un flag di compilazione attraverso un file di progetto Qt?

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

  •  21-08-2019
  •  | 
  •  

Domanda

Sto cercando di aggiungere l'uscita di "git descrivono" al riguardo finestra della mia domanda, quindi è più facile per scoprire quale versione dell'applicazione persone utilizzano.

posso farlo aggiungendo il seguente flag di compilazione: -DAPP_VERSION = "$ (git descrivere HEAD)"

Ma dal momento che il progetto si basa su qmake, mi piacerebbe trovare un modo per mettere questo nel file di progetto Qt. È possibile? E se sì, come?

modifica: Ho provato ad aggiungere il seguente:

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

Ma mi ha dato "-DAPP_VERSION =", quindi suppongo che devo utilizzare alcuni caratteri di escape, ma non so quali e dove. : /

È stato utile?

Soluzione

problema risolto grazie a questo link: http: // robertcarlsen .net / blog / 2009/01/06 / qmake-Xcode-bug-258

Ecco un progetto di qt di esempio ho usato per provarlo: 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();
}

Altri suggerimenti

È inoltre possibile utilizzare

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

Questo eseguirà il comando git solo una volta durante la corsa qmake che potrebbe accelerare la compilazione per i grandi progetti. Tuttavia, è necessario assicurarsi di eseguire qmake e make clean dopo aver tirato dal repository.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top