2009-09-03 13 views

Odpowiedz

11

nr

Ale jeśli używasz qmake następnie można ustawić flagi kompilatora w systemie build oparty na wynikach dowolnych poleceń, które mogą być użyteczne do tego, co chcesz.

Na przykład, jeśli były przy użyciu git, można zrobić coś takiego w pliku .pro:

REVISION = $$system(git rev-parse HEAD) 
DEFINES += APP_REVISION=$$REVISION 

Że daje APP_REVISION makro podczas kompilacji programu, który można użyć tak:

// stringize macro 
#define _STR(X) #X 
#define STR(X) _STR(X) 
QTextStream(cout) << "MyApp revision " STR(APP_REVISION) << endl; 
+0

Schludny! Będę musiał się z tym bawić. Używam NetBeans jako mojego IDE i sama kompiluje plik .pro, więc muszę wymyślić, jak go uzyskać, aby * nie * nadpisał moje zmiany. – mpen

+0

Jeśli w pliku projektu wprowadzisz polecenie "DEFINES + = APP_REVISION = \\\" $$ REVISION \\\ "", nie musisz zanieczyszczać plików źródłowych makrem "STR". –

+0

@Dan: To prawda, ale problem polega na tym, że liczba odwrotnych ukośników wymagana w twoim przykładzie jest specyficzna dla platformy (nawet specyficzna dla powłoki, ponieważ plik mingw32-make.exe w systemie Windows może uruchamiać polecenia przez cmd lub przez sh w zależności od środowiska). Myślę, że dość trudno to naprawić. – rohanpm