将宏传递给 nmake

Pass macro to nmake

本文关键字:nmake      更新时间:2023-10-16

从我之前的帖子中,我想出了为什么命令

build /nmake "USER_C_FLAGS=/DMyVersion=3"

不会将定义MyVersion与值 3 相关联。MSDN 说——

使用/Dname= 进行编译会导致符号没有关联的符号 价值。因此,虽然该符号仍可用于有条件地编译 代码,否则该符号的计算结果为零。例如,在 前面的示例程序,使用/DTEST= 编译将导致 编译器错误。此行为类似于将 #define 与 或 没有值。

我有一个在运行时设置的环境变量,我需要将该 env. 变量传递给 Visual Studio 2005 Makefile 项目。现在的问题是,我怎样才能通过环境。变量到运行时构建环境 ?一旦通过,我应该能够像这样的事情——

#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. 变量。任何想法都受到高度赞赏。

MSDN将为nmake环境变量宏回答这个问题。

请注意:"使用/E 选项使从环境变量继承的宏覆盖生成文件中具有相同名称的任何宏。