2010-04-28 19 views
1

J'ai '-Wredundant-decls' dans mon CXXFLAGS mais pour un fichier, je le veux enlevé.Comment supprimer un -D pour un seul fichier dans un makefile gnu?

Dans mon makefile GNU, comment puis-je structurer une règle pour supprimer uniquement cette partie du CXXFLAGS.

Je sais comment ajouter que pour ce fichier, je ferais quelque chose comme ceci:

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

Donc, idéalement, je ferais quelque chose comme ça (ce qui ne fonctionne pas) pour le supprimer:

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

Cependant, peut-être avec un peu de magie $, je peux construire une sorte de script sed ou perl pour dépouiller les -Wredundant-decls et mis CXXFLAGS à la valeur dénudée:

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

Répondre

2

Pas besoin de la coquille:

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

ou

$O/just_one_file.o: CXXFLAGS := $(filter-out -Wredundant-decls,$(CXXFLAGS)) 
+0

Gnu faire rejette cette syntaxe. /bin/sh: -c: ligne 0: erreur de syntaxe proche du jeton inattendu ') ' – WilliamKF

+0

La seconde que vous avez ajoutée est également rejetée. Ils sont probablement proches, mais il y a un problème avec la syntaxe. Semble que le $ CXXFLAGS ne se développe pas. – WilliamKF

+0

Il suffit de supprimer le dernier ')' de la ligne, c'est une faute de frappe. –

0

D'accord, j'ai tout compris pour moi-même:

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