【发布时间】:2016-01-28 14:56:32
【问题描述】:
我尝试在 GNU makefile 中使用 Windows 7 的环境变量 PROGRAMFILES(X86),但没有成功。
这是一个最小的例子:
$(info DIR: $(PROGRAMFILES(X86)))
nop:
@echo x
如果我执行这个makefile,我只会得到
DIR: )
x
在我预料之中:
DIR: C:\Program Files (x86)
x
知道如何在 GNU makefile 中使用环境变量 PROGRAMFILES(X86) 吗?
我在 Cygwin 上使用 GNU make 4.1 版(在本机 Windows 上使用 3.81 版)。 我知道还有环境变量“PROGRAMFILES”,但我真的需要“PROGRAMFILES(X86)”
【问题讨论】:
-
如果您运行
make -qp,您是否在make 知道的变量列表中看到该变量? -
在 Unix 系统上,环境变量名称通常不包含括号等标点符号。您使用这样的名称作为环境变量正在如履薄冰 - 我假设您实际上正在设法创建这样一个变量,尽管我对此有些怀疑:
export 'A(C)'=aleph-null从 Bash 3.2 生成-bash: export: 'A(C)=aleph-null': not a valid identifierMac OS X 10.11.3(但export 'AC'=aleph-null当然可以正常工作,所以不是单引号引起了问题)。 -
@Etan:在“make -qp”的输出中,它被命名为“ProgramFiles(x86)”,这很奇怪,因为通常 Cygwin 的 make 会将所有环境变量转换为大写。无论如何,无论我使用哪种外壳,我都无法访问环境变量。
-
@JonathanLeffler 这是 Windows。所有的常识和理智早已不复存在。 =)
-
您可以尝试使用
lp := (,然后使用$(info DIR: $(PROGRAMFILES$(lp)X86)),看看是否有效。我没有 cygwin 环境来测试它。如果这不起作用,您也可以尝试使用rp := ),看看是否有帮助。
标签: makefile environment-variables gnu-make