質問

現在の私のワークフロー:

  1. hg update (な使用のチェックアウト改訂)
  2. MyProject.proqmakeMyProject.vcproj
  3. 開Visual Studioファイルを編集
  4. 構築プロジェクト

の構築、更新する方法を教えてくださいっ 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.inhgid.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`\\\"

、スクリプトがたて一つ一つのターゲットに対して実行されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top