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)

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top