Comment puis-je passer la sortie d'une commande comme un indicateur du compilateur via un fichier de projet Qt?
-
21-08-2019 - |
Question
Je suis en train d'ajouter la sortie de « git décrire » à propos de la fenêtre de ma demande, il est donc plus facile de savoir quelle version de l'application utilisent les gens.
Je peux le faire en ajoutant le drapeau du compilateur suivant: -DAPP_VERSION = "$ (git décrit HEAD)"
Mais puisque le projet est basé sur qmake, je voudrais trouver un moyen de mettre cela dans le fichier de projet Qt. Est-ce possible? Et si oui, comment?
modifier: J'ai essayé d'ajouter ce qui suit:
QMAKE_CXXFLAGS + = -DAPP_VERSION = "$ (git décrit HEAD)"
Mais il m'a donné « -DAPP_VERSION = », donc je suppose que je dois utiliser des caractères d'échappement, mais je ne sais pas quels sont ceux et où. : /
La solution
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();
}
Autres conseils
Vous pouvez également utiliser
QMAKE_CXXFLAGS += -DAPP_VERSION=\\\"$$system(git describe HEAD)\\\"
exécutera la commande git une seule fois pendant la course qmake qui pourrait accélérer la compilation des grands projets. Cependant, vous devez vous assurer de fonctionner et qmake
après avoir tiré à partir make clean
du dépôt.