【发布时间】:2014-12-23 20:42:17
【问题描述】:
考虑命令make --eval '$(error $(shell echo foo && echo $$_))'(或3.82 之前的make 版本的等效makefile,其中似乎添加了eval 选项)。我希望这会输出“foo foo”,这就是 Cygwin 下的 gmake 3.82.90 发生的情况。但是 Debian 下的 gmake 3.81 和 4.0 输出的是“foo /usr/bin/make”。
有人明白为什么会这样吗?
当然,在真正的 makefile 中,shell 命令的第一部分比简单的回显要复杂一些,其想法是仅在命令成功时才输出其参数,否则将其留空以指示失败。这似乎比我的其他替代方案更优雅,并且在初始测试中工作(在 Cygwin 下),但显然我现在必须做其他事情......
【问题讨论】:
-
我在 debian 包中使用
GNU Make 4.0看到了相同的行为,但我没有看到在 CentOS 5 上手动构建的GNU Make 4.0。我从foo fooCentOS的自建版本。 -
感谢测试!这让事情变得更加……有趣。我检查了Debian patches,但那里似乎没有任何相关内容。确实是越来越好奇了。
-
在 Arch Linux 上使用
pacman安装的 GNU Make 4.1 也会打印出foo foo。