使用GNU Make 4.2.1
我正在编写一个Makefile,我想使用一个条件语句让make检查它是否在特定的远程服务器上。我想使用unix HOSTNAME
环境变量来执行此操作。我也希望它无论子域都可以运行,因此我使用了make wildcard
函数。
ifeq ($(wildcard *.remote.server.com),$(HOSTNAME))
echo "ON REMOTE SERVER"
else
echo "NOT ON REMOTE SERVER"
endif
这似乎可以正常工作,但是在我的本地计算机上未设置HOSTNAME
环境变量,并且ifeq
测试结果为true并显示ON REMOTE SERVER
。
这对我来说没有意义; *.remote.server.com
正在与一个空字符串进行比较,应评估为false并打印NOT ON REMOTE SERVER
。
我是否缺少有关unix环境变量,wildcard
或生成条件,或全部三个的某些信息?
您可以仅打印这些东西的值以查看它们的含义。像$(info wildcard='$(wildcard *.remote.server.com)' hostname='$(HOSTNAME)')
一样?出现这种情况的原因完全取决于您无法访问的本地系统。
但是,我不明白为什么你说*.remote.server.com
与一个空字符串进行比较。您已经编写了$(wildcard *.remote.server.com)
,并且可能没有与全局*.remote.server.com
匹配的文件,这意味着wildcard
函数将扩展为空字符串。
我想您可能对wildcard
函数的功能感到困惑:您期望它做什么?它与主机名无关。