我对以下的回复有点困惑覆盖 -Werror 标志的快速方法?
所以我在这里问我的具体问题。
我有多个 Makefile 一起工作,并且 CFLAGS 已设置为(-Werror -Wall .. 和许多其他)
但在其中一个 Makefile 中,我希望错误不要被视为警告,因此我想删除 -Werror 标志。
实现此目的的最佳方法是什么,以便仅对于此 Makefile,删除 -Werror 标志,而对于其他文件则正常执行?
谢谢,
阳光明媚
正确的方法是使用filter-out功能.
Put
CFLAGS := $(filter-out -Werror,$(CFLAGS))
在您想要覆盖它的 Makefile 中,以及-Werror
部分CFLAGS
将在该 Makefile 中删除。
您甚至可以使用它来覆盖单个目标的标志特定于目标的变量值:
CFLAGS = -Werror
all: foo bar
foo:
echo cc $(CFLAGS) -o $@
bar: CFLAGS := $(filter-out -Werror,$(CFLAGS))
bar:
echo cc $(CFLAGS) -o $@
foo
将使用默认构建CFLAGS
含有-Werror
, but bar
将在没有的情况下建造。
这是一个通用解决方案,适用于所有程序的所有参数,而不是要求每个程序提供一个--no-foo
对于每一个--foo
选项。
因为它无法从 Make 命令行完成,所以它不会直接回答您链接到的问题。但是,从命令行覆盖 Make 变量来强制构建内容是一个很好的方法,可以使不可构建的代码更难以维护!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)