4

我在使用nmakeWin7 x64 构建环境构建驱动程序时遇到问题。我正在定义一个预处理器变量并使用 -

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 实现相同的效果。他们必须调整项目文件以将他们的定义“导入”构建过程。看看MSBuild.exe 既不接受 /p:DefineConstants 也不接受 /p:PreprocessorDefinitions

于 2012-06-12T09:11:43.520 回答