在我的 Fedora15 机器上,我可以这样编写 Makefile:
app = MyApplication
deps = `pkg-config ...`
效果很好。然而,每当我尝试在 Debian 机器上执行这样的 Makefile 时,我显然会因为 '=' 周围的空格而出现错误。所以像这样重写它们:
app=MyApplication
deps=`pkg-config ...`
修复它。现在我的问题是,这种不兼容是如何引起的?我的 Fedora 版本是 3.82,而我的 Debian 版本是 3.81。搜索 make 的变更日志也没有发现任何使这成为可能的更改..
编辑:
我似乎找到了这种奇怪行为的原因:在我的大多数 makefile 中,我通常使用变量“include”来保存所有 pkg-config 输出。现在显然 'include' 是某种关键字,当在 Debian 上不这样使用时
include="stuff"
触发宏,寻找路径什么的。如果我如上所示使用它,我可以将它用作普通变量。但现在有趣的是:我总是可以在 Fedora 上使用 'include' 作为变量名!因此像这样的行:
include = `pkg-config --blah`
在 Fedora 下完美运行,但在 Debian 下总是失败,吐出“Makefile:2:=:没有这样的文件或目录”的行(它显然将 '=' 和其他所有内容都视为路径)
现在我的问题仍然存在,但是为什么我可以在 Fedora 上做这样的事情(为什么 'include 宏似乎没有在那里定义)而不是在 Debian 上?