10

コンパイルされたアプリケーションに、コンパイル中にコミット番号、ソースファイルのチェックサムなどを利用できるようにしたい。

プレーンなMakefileでは、次のようにします。

prog: VERSION source.c
    gcc -DVERSION=\"$(shell cat VERSION)\" source.c -o prog 

VERSION: .git
    git describe > VERSION

qmakeで似たようなものを使用するにはどうすればよいですか?

4

2 に答える 2

19

バージョン情報を#defineではなくインクルードファイル(たとえば「version.h」)として渡す場合は、qmakeファイルに次を追加できます。

# Define how to create version.h
version.target = version.h
version.commands = <PUT_YOUR_COMMANDS_HERE>
version.depends = .git

QMAKE_EXTRA_TARGETS += version

PRE_TARGETDEPS += version.h

最初の3行は、「version.h」を生成する「version」という新しいターゲットオブジェクトを作成する方法を示しています。コマンド「<PUT_YOUR_COMMANDS_HERE>」を実行して作成します。ターゲットは「.git」に依存しています

「QMAKE_EXTRA_TARGETS」は、「バージョン」と呼ばれる新しいターゲットがあることを示しています。

「PRE_TARGETDEPS」は、「version.h」が他の処理を実行する前に存在する必要があることを示します(まだ作成されていない場合は強制的に作成されます)。

于 2011-03-03T15:55:30.663 に答える
0

@jwernemyがそれを解決するための良い方法であるとしても、より簡単な解決策:

VERSION = $$system(-git-dir=$PWD/.git <PUT_YOUR_GIT_COMMANDS_HERE>)
于 2015-04-20T17:11:18.593 に答える