我正在编译软件包,我发现通常,Makefile作者在makefile中写入了设置CFLAGS,并带有这样和那样的选项。另一方面,我想尝试一些编译器优化,并希望传播编译器开关以尽可能少地麻烦。但这并不总是可行的。例如,当一个makefile指定CFLAGS,并且我希望所有的C编译器调用都使用-fomit-frame-pointer,因为缺少必须明确写出诸如CFLAGS=-fomit-frame-pointer make
之类的东西,那么我的选项不是什么黑客。从我所看到,上面的,再有就是相同,但不同make "CFLAGS=-fomit-frame-pointer"
,我还可以做什么,我认为是对这个问题的最佳解决方案和理由:默认情况下,为什么环境变量不会覆盖makefile中设置的变量?
export CFLAGS=-fomit-frame-pointer
make -e
我认为这是最好的一个,因为坦率地说,即使认为有潜在危险的标志,我也不会调试软件那么多,并且当我需要时,我可以根据需要重新编译特定的部分,包含调试信息和所有内容。否则,我喜欢使用发布软件,而不用调试花里胡哨的东西,特别是如果该包不是由我编写的。所以我想我在这里特别要问的是:为什么make不会自动将环境变量优先选择makefile?毕竟环境知道什么是最好的,为了让作者真的需要有自己的方式,有'覆盖'的语法,对吧?
有一个参数需要做: - 环境覆盖,做你所描述的,我认为,所以你可以通过使用一个脚本调用真正的make - “environment” -overrides FWIW – rogerdpack 2014-07-10 14:28:56