2008-09-29 13 views
7

Czy istnieje sposób ustawiania flag dla poszczególnych plików za pomocą automake?
W szczególności, jeśli mam projekt C++ i chcę skompilować z -Wszystkie pliki oprócz tego, dla którego chcę wyłączyć określone ostrzeżenie, co mogę zrobić?Ustawianie flag pliku z automake

Próbowałem coś takiego:

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

ale to nie działa.

EDYTOWANA: usunięto odwołanie do instrukcji automake, która w rzeczywistości była myląca (dzięki Douglasowi Leederowi).

Odpowiedz

5

Automake obsługuje tylko flagi per-cel, podczas gdy chcesz per- flagi obiektów. Jednym ze sposobów obejścia jest stworzenie małą bibliotekę, który zawiera obiekt:

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

Jesteś zdezorientowany - ta sekcja odnosi się do opcji automake się.

To sposób ustawiania opcji wiersza polecenia automake:

-W KATEGORIA --warnings = kategoria Ostrzeżenia wyjścia wchodzących w kategorii. kategoria może być jedną z następujących:

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 

Kategorię można wyłączyć, dodając przedrostek jej nazwy "nie-". Na przykład -Wno-składnia ukryje ostrzeżenia dotyczące nieużywanych zmiennych.

Kategorie wyjściowe domyślnie to "składnia" i "nieobsługiwane". Dodatkowo, "gnu" i "przenośność" są włączone w ścisłości - gnu i --gnits .

Zmienna środowiskowa OSTRZEŻENIA może zawierać listę oddzielonych przecinkami kategorii do włączenia. Zostanie on pobrany przed przełącznikami w linii poleceń , w ten sposób -Nie będzie również zignorować żadnej kategorii ostrzeżenia włączonej przez OSTRZEŻENIA. Ta zmienna jest również używana przez inne narzędzia, takie jak autoconf; nieznane kategorie są ignorowane dla tego powodu .

Plik wymieniony w sekcji 17 odnosi się do pliku per-Makefile nie źródłowego.

nie jestem świadomy jakiegokolwiek ustawienia dla źródła flagi plik, ale można ustawić opcję dla każdego pliku binarnego wynik z:

binaryname_CXXFLAGS 
13

Nie można tego zrobić z automake ... ale może zrobić z make =) Dodaj następujący wiersz do ciebie Makefile.am:

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

Aby uzyskać szczegółowe informacje, zapoznaj się z częścią GNU Make documentation : Target-specific Variable Values.

+0

Pytanie jest raczej stare, ale odpowiedź jest interesująca, ale dziękuję :) –

Powiązane problemy