代码之家  ›  专栏  ›  技术社区  ›  WilliamKF

如何在GNU生成文件中只删除一个文件的A-D?

  •  1
  • WilliamKF  · 技术社区  · 14 年前

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

    在我的gnu makefile中,如何构造一个规则来只删除cxflags的那部分。

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

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

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

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

    但是,也许有了一些$magic,我可以构建某种类型的sed或perl脚本来除去-wredundant decl并将cxflags设置为striped值:

    $O/just_one_file.o: CXXFLAGS = $(shell strip magic here for $CXXFLAGS)
    
    2 回复  |  直到 14 年前
        1
  •  2
  •   Beta    14 年前

    无需外壳:

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

    $O/just_one_file.o: CXXFLAGS := $(filter-out -Wredundant-decls,$(CXXFLAGS))
    
        2
  •  0
  •   WilliamKF    14 年前

    好吧,我自己想出来了:

    $O/just_one_file.o: CXXFLAGS := $(shell echo ${CXXFLAGS} | sed s/-Wredundant-decls//g)