2012-03-15 17 views
2

Jenkinsシステムで定義されている2つの環境変数(BUILD_NUMBERおよびNODE_NAME)をコンパイルして、これらのコンパイル時の値が保存され、それらの保存された値がプログラムとしてアクセスされるようにしたい(現在ユーザーがBUILD_NUMBERとNODE_NAMEを設定しているものに関係なく)コンパイル時にVisual Studio 2008環境変数を使用する

これはVisual Studio 2008を使用して可能ですか?私がコード内でこれを完全に達成できればいいと思いますし、何かを渡すためにコンパイルシステムを変更する必要はありませんでした。あなたがこの作品を作ることができる

答えて

5

一つの方法は、あなた#include "jenkins.h"とマクロBUILD_NUMBERへの即時アクセスを持っているあなたのソースから次に

>jenkins.h echo #define BUILD_NUMBER %BUILD_NUMBER% 

のようなものでバッチファイルを実行し、プリビルドステップを追加することですコンパイル時に焼き付けられる。

+0

これは興味深い提案です。 Visual Studioでこれをサポートしていないため、ビルド環境を変更する必要がある場合は、まずこの方法を試してみてください。 –

2

あなたは、変数のグローバル作成し、それらを取得するためにgetenvを使用することができます。

const char* buildNumber = getenv("BUILD_NUMBER"); 
const char* nodeName = getenv("NODE_NAME"); 

がこれはしかし、コンパイル時に行われていないが、あなたが唯一の実行時に変数を使用している場合、それはいけません問題。

EDIT:

あなたはプロジェクトのプロパティで、あなたのプリプロセッサディレクティブにBUILD_NUMBER="$(BUILD_NUMBER)"を追加することができます。

+0

私はこれが間違っていると信じていますが、誤解を招く可能性があります。 getenv()は実行時に値を返しませんか?コンパイル時の値が必要です。 –

+0

@BrianStinarはい。私は別のオプションを提供しました。 –

関連する問題