2008-09-29 15 views
7

Existe-t-il un moyen de définir des indicateurs par fichier avec automake?
En particulier, si j'ai un projet C++ et que je veux compiler avec -WAll tous les fichiers sauf un pour lequel je veux désactiver un avertissement particulier, que puis-je faire?Définition d'indicateurs par fichier avec automake

J'ai essayé quelque chose comme:

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

mais cela n'a pas fonctionné. EDITED: suppression de la référence au manuel d'automake, qui était en fait trompeur (merci à Douglas Leeder).

Répondre

5

Automake ne supporte que les indicateurs par cible, alors que vous voulez per- drapeaux d'objet. Une façon est de créer autour d'une petite bibliothèque qui contient votre objet:

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

Vous avez confondu - cette section fait référence à des options pour s'authentifier.

Il est une façon de définir les options de ligne de commande automake:

-W CATÉGORIE --warnings = catégorie avertissements de sortie chute dans la catégorie. La catégorie peut être l'une des suivantes:

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 

Une catégorie peut être désactivée en préfixant son nom avec 'no-'. Par exemple, -Wno-syntaxe masquera les avertissements sur les variables inutilisées.

Les catégories générées par défaut sont 'syntaxe' et 'non pris en charge'. En outre, 'gnu' et 'portabilité' sont activés dans --gnu et --gnits de rigueur. La variable d'environnement WARNINGS peut contenir une liste séparée par des virgules des catégories à activer. Il sera pris en compte avant les commutateurs de la ligne de commande, de cette façon -Wnone ignore également toute catégorie d'avertissement activée par AVERTISSEMENTS. Cette variable est aussi utilisée par d'autres outils comme autoconf; inconnu les catégories sont ignorées pour cette raison .

Le fichier par défaut répertorié dans la section 17 fait référence à un fichier source non créé par fichier Makefile.

Je ne suis pas au courant d'aucun paramètre de drapeau de fichier par source, mais vous pouvez définir l'option pour chaque binaire résultat avec:

binaryname_CXXFLAGS 
13

Vous ne pouvez pas le faire avec automake ... mais pouvez faire avec make =) Ajouter ligne suivante vous Makefile.am:

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

Voir GNU Make documentation : Target-specific Variable Values pour plus de détails.

+0

La question est maintenant plutôt ancienne, mais la réponse est néanmoins intéressante, merci :) –