Impostazione dei flag per file con automake
Domanda
Esiste un modo per impostare i flag in base al file con automake?
In particolare, se ho un progetto c ++ e voglio compilare con -WTutti i file tranne uno per il quale desidero disabilitare un particolare avviso, cosa posso fare?
Ho provato qualcosa del tipo:
CXXFLAGS = -WAll ...
bin_PROGRAMS = test
test_SOURCES = main.cpp utility.cpp
utility_o_CXXFLAGS = $(CXXFLAGS) -Wno-unused-value
ma non ha funzionato.
EDITED: rimosso il riferimento al manuale di automake, che in realtà era fuorviante (grazie a Douglas Leeder).
Soluzione
Automake supporta solo flag per target, mentre desideri flag per oggetto. Un modo per aggirare è quello di creare una piccola libreria che contiene il tuo oggetto:
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
Altri suggerimenti
Non puoi farlo con automake
... ma puoi fare con make
=) Aggiungi la seguente riga al tuo Makefile.am
:
utility.$(OBJEXT) : CXXFLAGS += -Wno-unused-value
Vedi GNU Crea documentazione: valori variabili specifici del target per dettagli.
Sei confuso: quella sezione si riferisce alle opzioni per automake stesso.
È un modo per impostare le opzioni della riga di comando di automake:
-W CATEGORIA --warnings = categoria Avvisi di output che rientrano nella categoria. la categoria può essere una di:
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
Una categoria può essere disattivata aggiungendo il proprio nome con & # 8216; no - & # 8217 ;. Ad esempio, -Wno-sintassi nasconderà il avvisi relativi a variabili non utilizzate.
Le categorie generate per impostazione predefinita sono & # 8216; sintassi & # 8217; e & # 8216; non supportato & # 8217 ;. Inoltre, & # 8216; gnu & # 8217; e & # 8216; portabilità & # 8217; sono abilitati in --gnu e --gnits severità.
La variabile di ambiente AVVERTENZE può contenere un elenco separato da virgole di categorie da abilitare. Sarà preso in considerazione prima della riga di comando interruttori, in questo modo-anche nessuno ignora qualsiasi categoria di avviso abilitata da AVVERTENZE. Questa variabile è anche usata da altri strumenti come autoconf; sconosciuto le categorie sono ignorate per questo ragione.
Il per-file elencato nella sezione 17 si riferisce al file di origine non per Makefile.
Non sono a conoscenza di alcuna impostazione flag per file di origine, ma puoi impostare l'opzione per ogni risultato binario con:
binaryname_CXXFLAGS