2008-09-29 8 views
7

Gibt es eine Möglichkeit, Flags auf Dateibasis mit automake zu setzen?
Insbesondere, wenn ich ein C++ Projekt habe und mit -WAll alle Dateien bis auf eine Datei kompilieren möchte, für die ich eine bestimmte Warnung deaktivieren möchte, was könnte ich tun?Setzen von Datei-Flags mit automake

habe ich versucht, so etwas wie:

CXXFLAGS = -WAll ... 
bin_PROGRAMS = test 
test_SOURCES = main.cpp utility.cpp 
utility_o_CXXFLAGS = $(CXXFLAGS) -Wno-unused-value 

aber es hat nicht funktioniert.

EDITED: Verweis auf automake Handbuch entfernt, die eigentlich irreführend war (danke an Douglas Leeder).

Antwort

5

Automake- nur Fahnen pro-Ziel unterstützt, während Sie per- Objektflaggen. Ein Weg, um ist eine kleine Bibliothek zu erstellen, die das Objekt enthält:

CXXFLAGS = -Wall ... 
bin_PROGRAMS = test 
test_SOURCES = main.cpp 
test_LDADD = libutility.a 
noinst_LIBRARIES = libutility.a 
libutility_a_SOURCES = utility.cpp 
libutility_a_CXXFLAGS = $(CXXFLAGS) -Wno-unused-value 
2

Sie haben verwirrt - dieser Abschnitt bezieht sich auf Optionen, selbst zu automatisieren.

Es ist ein Weg, um die autoBefehlsZeilenOptionen der Einstellung:

-W KATEGORIE --warnings = Kategorie Output Warnungen in der Kategorie fallen. Die Kategorie kann eine der folgenden sein:

gnu 
    warnings related to the GNU Coding Standards (see Top). 
obsolete 
    obsolete features or constructions 
override 
    user redefinitions of Automake rules or variables 
portability 
    portability issues (e.g., use of make features that are known to be not portable) 
syntax 
    weird syntax, unused variables, typos 
unsupported 
    unsupported or incomplete features 
all 
    all the warnings 
none 
    turn off all the warnings 
error 
    treat warnings as errors 

Eine Kategorie kann deaktiviert werden, indem der Name mit 'no-' vorangestellt wird. Zum Beispiel, -No-Syntax wird die Warnungen über nicht verwendete Variablen ausblenden.

Die Kategorien, die standardmäßig ausgegeben werden, sind "Syntax" und "nicht unterstützt". Zusätzlich sind 'gnu' und 'Portabilität' aktiviert in --gnu und --gnits Strenge.

Die Umgebungsvariablen WARNINGS können eine durch Kommas getrennte Liste von Kategorien enthalten, die aktiviert werden sollen. Es wird in Betracht gezogen werden, bevor die Befehlszeile schaltet, auf diese Weise -Wnone wird auch ignorieren alle Warnkategorie aktiviert von WARNUNGEN. Diese Variable wird auch von anderen Tools wie autoconf verwendet; unbekannt Kategorien werden für diesen Grund ignoriert.

Die pro-Datei in Abschnitt 17 bezieht sich auf per-Makefile nicht Quelldatei.

Ich bin nicht bekannt, dass pro-Source-Einstellungsdatei Flag, aber Sie können die Option für jedes Ergebnis binär mit gesetzt:

binaryname_CXXFLAGS 
13

Sie können dies tun, mit automake ... aber kann mit make tun =) In den Sie folgende Zeile Makefile.am:

utility.$(OBJEXT) : CXXFLAGS += -Wno-unused-value 

Weitere Informationen finden Sie unter GNU Make documentation : Target-specific Variable Values.

+0

Die Frage ist jetzt ziemlich alt, aber die Antwort ist trotzdem interessant, danke :) –