Установка флагов для каждого файла с помощью automake
Вопрос
Есть ли способ установить флаги для каждого файла с помощью automake?
В частности, если у меня есть проект на c ++ и я хочу скомпилировать с помощью -WAll все файлы, кроме одного, для которого я хочу отключить определенное предупреждение, что я могу сделать?
Я попробовал что-то вроде:
CXXFLAGS = -WAll ...
bin_PROGRAMS = test
test_SOURCES = main.cpp utility.cpp
utility_o_CXXFLAGS = $(CXXFLAGS) -Wno-unused-value
но это не сработало.
ОТРЕДАКТИРОВАННЫЙ:удалена ссылка на руководство automake, которое на самом деле вводило в заблуждение (спасибо Дугласу Лидеру).
Решение
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
Другие советы
Ты не можешь сделать это с automake
...но могу сделать с make
=) Добавьте следующую строку в свой Makefile.am
:
utility.$(OBJEXT) : CXXFLAGS += -Wno-unused-value
Видишь Документация GNU Make :Значения переменных, специфичных для конкретной цели за подробностями.
Вы запутались - этот раздел ссылается на опции для автоматического создания самого себя.
Это способ настройки параметров командной строки automake:
-W КАТЕГОРИЯ --предупреждения= категория Выводите предупреждения, относящиеся к категории.категория может быть одной из:
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 строгость.
ПРЕДУПРЕЖДЕНИЯ переменной среды могут содержать разделенный запятыми список категорий, которые необходимо включить.Это будет учтено до того, как командная строка переключится таким образом -Wnone также проигнорирует любую категорию предупреждений, включенную WARNINGS.Эта переменная также используется другими инструментами, такими как autoconf;неизвестные категории игнорируются по этой причине.
Значение для каждого файла, указанное в разделе 17, относится к каждому Makefile, а не к исходному файлу.
Я не знаю о какой-либо настройке флага для каждого исходного файла, но вы можете установить параметр для каждого двоичного файла результата с помощью:
binaryname_CXXFLAGS