Установка флагов для каждого файла с помощью automake

StackOverflow https://stackoverflow.com/questions/149324

  •  02-07-2019
  •  | 
  •  

Вопрос

Есть ли способ установить флаги для каждого файла с помощью 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top