取得する改正の数VSとqmake
-
20-09-2019 - |
質問
現在の私のワークフロー:
hg update
(な使用のチェックアウト改訂)MyProject.pro
→qmake
→MyProject.vcproj
- 開Visual Studioファイルを編集
- 構築プロジェクト
の構築、更新する方法を教えてくださいっ config.h
ヘッダファイルの情報からのバージョンコントロールシステムなど hg id
)?
MyProject.vcproj
が生成される qmake
, うな編集してください。
解決
あなたはqmakeの内部から外部コマンドを実行することができます。
:あなたのソース内の情報を利用できるようにする最も簡単な方法は、定義を使用することですHGID = $$system(hg id)
DEFINES += HGID=\\\"$$HGID\\\"
私はあなたがqmakeのから外部ファイルを編集できるかはわかりません。あなたは、外部ツールを使用することができますが、Windows上であなたは、通常sed
のようなものを持っていないので、それは少しより問題かもしれません。
他のヒント
カスタムビルドターゲットとPRE_TARGETDEPS
キーワードを使用していることを達成することができます。 config.h.in
と仮定するとfolowing形式があります:
#define HGID $HGID
あなたは次のように前にあなたのメインターゲットの構築にhgid.h.in
しhgid.h
と出力を処理するカスタムビルドターゲットを定義することができます:
hgid.target = hgid
hgid.commands = sed s/\\\$$HGID/`hg id`/ hgid.h.in > hgid.h
QMAKE_EXTRA_TARGETS += hgid
PRE_TARGETDEPS += hgid
一つOPTONはキーワード拡張を有効にすることです。 (それはあなたのものかどうかのMercurial.ini)あなたのhgrcにこのような何かを入れます:
[extensions]
hgext.keyword=
[keyword]
config.h =
[keywordmaps]
HGREV = {node}
そして、config.hのPUTでます:
#define HGREV "$HGREV$"
「$ HGREV:deadbeefdeadbeefの$」あなたが外進値を解析する必要があるかもしれません。あなたが取得しますが、それは簡単にHGREVが定義アクセスしているものは何でもコードによって行われます。
ルーカス・ラリンズキーとgoodroneさんのコメントに加えて、私はqmakeのはだけでなく、それの出力に、スクリプトに直接リンクできることに言及したいと思います。だから、1が言うことができます。
DEFINES += REPO_ID=\\\"`./setlocalversion.sh`\\\"
、スクリプトがたて一つ一つのターゲットに対して実行されます。