将宏传递给 nmake

Posted

技术标签:

【中文标题】将宏传递给 nmake【英文标题】:Pass macro to nmake 【发布时间】:2012-06-12 21:13:01 【问题描述】:

从my earlier post,我明白了为什么这个命令

build /nmake "USER_C_FLAGS=/DMyVersion=3"

不将定义 MyVersion 与值 3 相关联。 MSDN says that-

使用 /Dname= 编译会导致符号没有关联的 价值。所以,虽然符号仍然可以用于有条件地编译 代码,否则该符号将评估为无。例如,在 上一个示例程序,使用 /DTEST= 编译将导致 编译器错误。此行为类似于将 #define 与 or 一起使用 没有值。

我有一个在运行时设置的环境变量,我需要传递该环境。 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。变量。任何想法都受到高度赞赏。

【问题讨论】:

我认为您引用的手册部分是用于定义没有内容的宏,即文字“/DMACRO=”,与“/DMACRO”相同。你的例子应该有效。也许你可以发布你的makefile的相关部分? 【参考方案1】:

MSDN 将为 nmake Environment-Variable Macros 回答此问题。

注意这里:“使用 /E 选项使从环境变量继承的宏覆盖 makefile 中任何同名的宏。”

【讨论】:

以上是关于将宏传递给 nmake的主要内容,如果未能解决你的问题,请参考以下文章

SAS代码错误地将宏变量的值作为输出中的新列/变量传递

将宏传输到 UDF

为啥将宏参数放在括号中会导致错误? [关闭]

SAS Proc SQL INTO - 无法将宏变量写入宏?

将宏函数定义为是什么意思?

在clojure中,如何将宏应用于列表?