1

我的 CXXFLAGS 中有“-Wredundant-decls”,但对于一个文件,我希望将其删除。

在我的 GNU makefile 中,我如何构建一个规则来仅删除 CXXFLAGS 的那部分。

我知道如何只为该文件添加,我会做这样的事情:

$O/just_one_file.o: CXXFLAGS += -Wredundant-decls

所以,理想情况下,我会做这样的事情(这不起作用)来删除它:

$O/just_one_file.o: CXXFLAGS -= -Wredundant-decls

但是,也许有一些 $ 魔法,我可以构造某种 sed 或 perl 脚本来去除 -Wredundant-decls 并将 CXXFLAGS 设置为去除的值:

$O/just_one_file.o: CXXFLAGS = $(shell strip magic here for $CXXFLAGS)
4

2 回答 2

2

不需要外壳:

$O/just_one_file.o: CXXFLAGS := $(subst -Wredundant-decls,,$(CXXFLAGS))

或者

$O/just_one_file.o: CXXFLAGS := $(filter-out -Wredundant-decls,$(CXXFLAGS))
于 2010-04-28T00:28:37.290 回答
0

好吧,我自己想通了:

$O/just_one_file.o: CXXFLAGS := $(shell echo ${CXXFLAGS} | sed s/-Wredundant-decls//g)
于 2010-04-28T00:30:07.840 回答