如何使用 NMake 设置环境变量

Posted

技术标签:

【中文标题】如何使用 NMake 设置环境变量【英文标题】:How do I set an Environment Variables With NMake 【发布时间】:2016-07-14 18:17:39 【问题描述】:

我正在使用 NMake 制作一个 makefile。我有一些实用程序可以将一个文件转换为 CPP 文件。该实用程序需要在会话期间设置特定的 Windows 环境变量。我可以在 Makefile 中设置这个变量,还是需要在调用 NMake 之前创建一个设置变量的批处理脚本?

【问题讨论】:

【参考方案1】:

使用!if [set ...]trick:

!if [set myvar=1]
!endif

# Macro values are fine, too, of course:
MYVAL=preprocessed
!if [set myvar=$(MYVAL)]
!endif

# Proof that myvar has really become an env. var. (see the output):
myvar=This is propagated to the env now!
mymacro=(But this isn't, of course.)

# This handy form works, too:
!if [set myA=1] || [set myB=2]
!endif

# But this will *NOT* make myX an env. var., if it hasn't been set yet:
!if [set myX=$(myX)]
!endif
myX=So you'll not see this...

all:
    set my

输出:

D:\tmp>nmake -f test.mak

Microsoft (R) Program Maintenance Utility Version 14.21.27702.2
Copyright (C) Microsoft Corporation.  All rights reserved.

        set my
myA=1
myB=2
myvar=This is propagated to the env now!

【讨论】:

【参考方案2】:

调用nmake 时存在的环境变量ENVAR 被继承 作为同名的nmake 宏。如果您更改 ENVVAR 的值 生成文件,例如:

ENVAR=newval

然后环境变量ENVAR 假设命令的值newval 由 makefile 运行。目标:

foo:
    echo "%ENVAR%"

将回显newval

但你不能创建这样的环境变量ENVAR。所以你会 至少必须先创建要使用的环境变量 调用nmake

【讨论】:

“在调用 nmake 之前,您必须……创建环境变量……” 幸运的是,这并不完全正确;请看我的回答。

以上是关于如何使用 NMake 设置环境变量的主要内容,如果未能解决你的问题,请参考以下文章

将预处理器变量传递给 nmake 构建环境

如何将环境变量持久保存到 Visual Studio 构建助手?

如何获取和打印环境变量的值?

如何在 NMake 中创建和使用多行字符串变量?

如何设置系统环境变量?

如何设置ug环境变量