作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 Quick way to override -Werror flag? 的回复有点困惑
所以我在这里问我的具体问题。
我有多个 Makefile 一起工作,并且 CFLAGS 已设置为(-Werror -Wall .. 和许多其他)
但在其中一个 Makefile 中,我希望这些错误不要被视为警告,因此我想删除 -Werror 标志。
实现此目的的最佳方法是什么,以便仅对于此 Makefile,-Werror 标志被删除,而其他文件则正常执行?
谢谢,阳光明媚
最佳答案
正确的方法是使用 filter-out
function .
放置
CFLAGS := $(filter-out -Werror,$(CFLAGS))
在您想要覆盖此设置的 Makefile 中,CFLAGS
的 -Werror
部分将在该 Makefile 中删除。
您甚至可以使用 target-specific variable values 来覆盖单个目标的标志。 :
CFLAGS = -Werror
all: foo bar
foo:
echo cc $(CFLAGS) -o $@
bar: CFLAGS := $(filter-out -Werror,$(CFLAGS))
bar:
echo cc $(CFLAGS) -o $@
foo
将使用包含 -Werror
的默认 CFLAGS
构建,但 bar
将不构建。
这是一个通用解决方案,适用于所有程序的所有参数,而不是要求每个程序为每个 --foo
提供一个 --no-foo
> 选项。因为它无法从 Make 命令行完成,所以它不会直接回答您链接到的问题。但是从命令行重写 Make 变量来强制构建内容是一个很好的方法,可以使不可构建的代码更难以维护!
关于makefile - 使 : Override a flag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17316426/
我是一名优秀的程序员,十分优秀!