4

nmakeWin7x64ビルド環境でのドライバーのビルドに問題があります。プリプロセッサ変数を定義し、-を使用してコマンドラインに渡します

build /nmake "USER_C_FLAGS=/DMyVersion=3"

そして、ビルドログは-

...
/DMyVersion=3
/typedil- 
/wd4603
/wd4627
....

ですから、私は変数をコンパイラオプションの一部としてはっきりと見ています。今ヘッダーファイで、私はします

#define otherVersion 10
#ifdef MyVersion
  #undef otherVersion
  #define otherVersion MyVersion
#endif

#define FileVersion otherVersion

問題は、渡された定義に関係なくFileVersion常に10であり、環境に存在することです。MyVersionテストするために、何が起こっているのか、私はしました-

#ifdef MyVersion
  #error MyVersion is present in the environment.
#endif

ステートメントが印刷されているのがわかります。しかし、プリプロセッサディレクティブが環境に存在するにもかかわらず、なぜotherVersion常に10であるのでしょうか。コマンドラインオプションを介して渡された値3を取得しないのはなぜですか?

4

1 に答える 1

1

これがうまくいくかどうかはわかりませんが、msbuildを使用してまったく同じことを達成しようとした人もいます。彼らは、プロジェクトファイルを適応させて、定義をビルドプロセスに「パイプ」する必要がありました。/ p:DefineConstantsも/ p:PreprocessorDefinitionsも受け入れないMSBuild.exeを見てください

于 2012-06-12T09:11:43.520 に答える