Вы можете сделать несколько вещей:
(1) Одно из решений будет включать общий фрагмент Makefile на всех Makefile.am
с:
include $(top_srcdir)/common.mk
...
bin_PROGRAMS = foo
foo_SOURCES = ...
в том случае, если будет писать
AM_CXXFLAGS = -fpic -Wall -Wextra
до common.mk
и в будущем будет проще добавить больше макросов или правил ко всем Makefile.am
, просто отредактировав этот файл.
(2) Другое решение было бы установить эти переменные глобально в вашем configure.ac
(имя configure.in
устарели давно), как в:
...
AC_SUBST([AM_CXXFLAGS], [-fpic -Wall -Wextra])
...
Тогда вам даже не нужно ничего говорить в вашем Makefile.am
s, они автоматически наследуют это глобальное определение. Недостатком является то, что вы не можете легко отказаться (с первым решением легко принять решение не включать common.mk
), и зависимость на самом деле не является явной для сторонних людей (когда они читают Makefile.am
, они не имеют никакого намека на то, где могут появляться флаги).
(3) Третьим решением было бы сделать так, чтобы orsogufo предложил: перезаписать пользовательскую переменную CXXFLAGS в configure.ac
. Я бы посоветовал это, потому что он побеждает одну из особенностей GNU Build System: пользователям разрешено переопределять эту переменную в make
-time. Например, вы можете ввести
make CXXFLAGS='-O0 -ggdb'
при отладке кусок кода, и это будет перезаписать определение CXXFLAGS
(но не те, в AM_CXXFLAGS
). Честно говоря, большинство проектов не поддерживают это правильно, потому что они играют трюки с CXXFLAGS
.
Наконец, я должен упомянуть, что -fpic
, -Wall
и -Werror
не являются переносимыми вариантами. В зависимости от объема вашего проекта вы можете добавить проверку configure для этих (gnulib недавно приобретенных новых макросов для тестов для флагов предупреждений, а libtool может использоваться для создания разделяемых библиотек).
Использование включают идиомы в Makefile.am сделает Заставляет Automake для вывода зависимостей для Makefile и Makefile.in, что в конечном итоге получить обратно в включенный файл и файл automake. Таким образом, изменение этого приведет и к обновлениям позже. – johnny 2009-02-12 08:27:43