2009-09-03 7 views
6

Qtは.NETのようにあなたのプログラムに関するどんな種類のバージョン情報も保持していますか?ビルド番号のように?それとも、SVNリビジョンに簡単にアクセスできますか?Qt自動ソフトウェアバージョン?

答えて

11

しかし、あなたはqmakeを使用しているならば、あなたがやりたいために使用可能であるかもしれない、任意のコマンドの結果に基づいて、ビルドシステムでコンパイラフラグを設定することができます。例えば

あなたはgitのを使用していた場合、あなたはあなたの.proファイル内でこのような何かを行うことができます:

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

あなたはこのように使用することができ、あなたのプログラムを、コンパイル時にAPP_REVISIONマクロを与えるだろう。

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

ニート!私はこれと一緒に遊ぶ必要があります。 NetBeansをIDEとして使用していて、.proファイル自体を作成するので、変更を上書きしないようにする方法を見つけなければなりません。 – mpen

+0

プロジェクトファイルで 'DEFINES + = APP_REVISION = \\\" $$ REVISION \\\ "'を実行すると、ソースファイルを 'STR'マクロで汚染する必要はありません。 –

+0

@Dan:これは事実ですが、問題は、あなたの例で必要なバックスラッシュの数がプラットフォーム固有であることです(シェル特有のものでも、Windowsのmingw32-make.exeは環境に応じてcmdまたはsh経由でコマンドを実行できるためです) )。私はそれを正しくするのは非常に難しいと思う。 – rohanpm

関連する問題