2009-05-12 3 views
2

J'essaie d'ajouter la sortie de "git describe" à la fenêtre about de mon application, il est donc plus facile de trouver la version de l'application que les gens utilisent.Comment puis-je transmettre la sortie d'une commande en tant qu'indicateur de compilation via un fichier de projet Qt?

je peux le faire en ajoutant le drapeau du compilateur suivant: -DAPP_VERSION = « $ (git décrivent HEAD) »

Mais puisque le projet est basé sur qmake, je voudrais trouver un moyen de mettre cette dans le fichier de projet Qt. Est-ce possible? Et si oui, comment?

modifier: Je essayé d'ajouter ce qui suit:

QMAKE_CXXFLAGS + = -DAPP_VERSION = "$ (git décrire HEAD)"

Mais il m'a donné "-DAPP_VERSION =", donc je suppose que je Je dois utiliser des caractères d'échappement, mais je ne sais pas lesquels et où. :/

Répondre

5

Problème résolu grâce à ce lien: http://robertcarlsen.net/blog/2009/01/06/qmake-xcode-bug-258

Voici un exemple de projet qt je le tester: 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(); 
} 
+0

Ça va très bien avec: http://stackoverflow.com/a/12368262/1959808 –

+0

cela n'a-t-il pas le même problème que décrit ci-dessus? si vous changez de branche et que qt.pro et qt.cpp n'ont pas changé, il ne sera pas recompilé ... mais l'autre branche peut avoir des changements dans d'autres fichiers (et avoir aussi un hash différent) – mBardos

1

Vous pouvez également utiliser

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

Ceci n'exécutera la commande git qu'une seule fois au cours de l'exécution de qmake, ce qui pourrait accélérer la compilation pour les grands projets. Toutefois, vous devez vous assurer d'exécuter qmake et make clean après avoir extrait le référentiel.

+0

Non robuste, comme tout changement (par exemple, sale) sera facilement manqué. –

+0

Cette fonctionnalité est nécessaire pour les constructions qui sont données à d'autres. Et dans ce cas, vous devriez avoir un script de construction qui s'assure que l'arbre n'est pas sale et qu'une reconstruction complète est faite (y compris une exécution de qmake). –

Questions connexes