gpt4 book ai didi

makefile - 使 : Override a flag

转载 作者:行者123 更新时间:2023-12-02 19:18:55 33 4
gpt4 key购买 nike

我对 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/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com