Установка флагов для каждого файла с помощью automake - PullRequest
7 голосов
/ 29 сентября 2008

Есть ли способ установить флаги для каждого файла с помощью automake?
В частности, если у меня есть проект на c ++ и я хочу скомпилировать с -Wall все файлы, кроме одного, для которого я хочу отключить конкретное предупреждение, что я могу сделать?

Я пробовал что-то вроде:

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

но это не сработало.

РЕДАКТИРОВАНИЕ: удалена ссылка на руководство по automake, которое на самом деле вводило в заблуждение (благодаря Дугласу Лидеру).

Ответы [ 3 ]

15 голосов
/ 11 сентября 2012

Вы не можете сделать это с automake ... но может сделать с make =) Добавить следующую строку в ваш Makefile.am:

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

См. GNU Make документация: Целевые переменные значения для подробностей.

5 голосов
/ 14 октября 2008

Automake поддерживает только флаги для каждой цели, в то время как вы хотите флаги для каждого объекта. Одним из способов является создание небольшой библиотеки, содержащей ваш объект:

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 голосов
/ 29 сентября 2008

Вы запутались - этот раздел ссылается на опции для автоматизации.

Это способ установки параметров командной строки automake:

-W КАТЕГОРИЯ --warnings = категория Вывод предупреждений, попадающих в категорию. категория может быть одной из:

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 

Категория можно отключить, поставив перед ее именем префикс «no-». Например, -Wno-синтаксис будет скрывать предупреждения о неиспользуемых переменных.

По умолчанию выводятся категории «Синтаксис» и «Неподдерживаемый». Кроме того, «GNU» и «мобильность» включены в --gnu и --gnits Строгость.

Переменная окружения WARNINGS может содержать разделенный запятыми список категории для включения. Будет принято во внимание перед командной строкой переключатели, таким образом, не будет также игнорировать любую категорию предупреждений, включенную ПРЕДУПРЕЖДЕНИЯ. Эта переменная также используется другими инструментами, такими как autoconf; неизвестный категории игнорируются для этого причина.

Файл, указанный в разделе 17, относится к файлу, не являющемуся исходным файлом Make-File.

Мне не известны какие-либо настройки флага файла для каждого источника, но вы можете установить параметр для каждого двоичного файла результата с помощью:

binaryname_CXXFLAGS
...