-1

私の以前の投稿から、なぜコマンドが

build /nmake "USER_C_FLAGS=/DMyVersion=3"

MyVersiondefineを値3に関連付けません。MSDNはそれを言う-

/Dname= を指定してコンパイルすると、シンボルに関連付けられた値がなくなります。そのため、シンボルを使用してコードを条件付きでコンパイルすることはできますが、それ以外の場合、シンボルは何も評価されません。たとえば、前のサンプル プログラムでは、/DTEST= を指定してコンパイルすると、コンパイラ エラーが発生します。この動作は、値の有無にかかわらず #define を使用する場合と似ています。

実行時に設定される環境変数があり、その環境変数を渡す必要があります。変数をVisual Studio 2005 Makefile Projectに追加します。問題は、どうすればenvを渡すことができるかです。実行時ビルド環境への変数? 合格したら、次のようなことができるはずです-

#define VERSION 11

#ifdef BUILD_VERSION       // How to get this macro to the current env. ?
   #undef VERSION
   #define VERSION BUILD_VERSION
#endif

#define FILE_VERSION VERSION

nmakeドキュメントからenvを渡すためのフラグが表示されません。変数。どんなアイデアでも大歓迎です。

4

1 に答える 1

2

MSDN は、 nmake Environment-Variable Macrosについてこれに回答します。

ここで注意してください: 「/E オプションを使用して、環境変数から継承されたマクロがメイクファイル内の同じ名前のマクロをオーバーライドするようにします。」

于 2012-06-14T21:48:32.027 に答える