Ajuste bandeiras por arquivo com automake
Pergunta
Existe uma maneira set bandeiras em uma base per-file com automake?
Em particular, se eu tenho um c ++ projeto e quer compilar com -Wall todos os arquivos, exceto aquele para o qual eu quero desativar um aviso em particular, o que eu poderia fazer?
Eu tentei algo como:
CXXFLAGS = -WAll ...
bin_PROGRAMS = test
test_SOURCES = main.cpp utility.cpp
utility_o_CXXFLAGS = $(CXXFLAGS) -Wno-unused-value
mas não funcionou.
editado:. Referência removido para automake manual, o que foi realmente enganosa (graças a Douglas Leeder)
Solução
Automake só suporta bandeiras per-alvo, enquanto você deseja bandeiras por objeto. Uma maneira de contornar é a criação de uma pequena biblioteca que contém o objeto:
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
Outras dicas
Você não pode fazer isso com automake
... mas pode fazer com make
=) Adicionar seguinte linha ao seu Makefile.am
:
utility.$(OBJEXT) : CXXFLAGS += -Wno-unused-value
Consulte a documentação GNU make: valores de variáveis ??específicas-alvo para obter mais informações.
Você ficou confuso -. Essa seção se refere a opções para o automake si
É uma maneira de definir as opções de linha de comando automake:
CATEGORIA -W --warnings = categoria avisos de saída caindo na categoria. categoria pode ser um dos seguintes:
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
A categoria pode ser desligado por prefixar seu nome com ‘no-’. Por exemplo, -Wno-sintaxe irá esconder o advertências sobre variáveis ??não utilizadas.
A saída categorias por padrão são ‘sintaxe’ e ‘sem suporte’. Além disso, ‘gnu’ e ‘portabilidade’ estão habilitados no --gnu e --gnits rigor.
As advertências ambiente variáveis ??podem conter uma lista separada por vírgula de Categorias habilitar. A decisão será tomada em conta antes da linha de comando muda, desta forma -Wnone também irá ignorar qualquer categoria de alerta ativado por Avisos. Esta variável é também utilizada por outras ferramentas como o autoconf; desconhecido Categorias são ignorados para este razão.
O per-arquivo listado na seção 17 refere-se ao arquivo de origem per-Makefile não.
Eu não estou ciente de qualquer configuração de sinalizador arquivo per-fonte, mas você pode definir a opção para cada binário resultado com:
binaryname_CXXFLAGS