Automake: изменить простоту сделать правило, чтобы включить дополнительные флаги - PullRequest
3 голосов
/ 11 октября 2010

Как я могу добавить дополнительные переменные-флажки (например, CPPFLAGS), которые будут применяться ко всем make-файлам?В настоящее время мы используем CPPFLAGS, но он должен быть зарезервирован как переменная пользователя, и я хотел бы зарезервировать его.Я предпочел бы не использовать AM_CPPFLAGS, потому что я хотел бы зарезервировать это для конкретного Makefile.amS.То, что я хочу, - это что-то вроде GLOBAL_CPPFLAGS, которое я мог бы установить в configure.ac и применить ко всему.Также было бы неплохо, если бы был способ явно игнорировать флаг.

Я думаю, что мне нужно написать собственное правило make, но как сделать это доступным во всех подпапках без его копированияв каждый Makefile.am?

Ответы [ 3 ]

4 голосов
/ 12 октября 2010

Вы правильно не используете CPPFLAGS. Это пользовательская переменная . Я бы сделал что-то вроде этого:

В корне вашего исходного каталога создайте файл с именем common.am и определите все, что вам нужно:

## common.am
AM_CPPFLAGS = -DFOO

Я знаю, что вы сказали, что не хотите использовать AM_CPPFLAGS, но выслушайте меня. В ваших отдельных подкаталогах, include $(top_srcdir)/common.am и расширьте или переопределите AM_CPPFLAGS при необходимости:

## bar/Makefile.am
include $(top_srcdir)/common.am
AM_CPPFLAGS += -DBAR

Если вы хотите переопределить, используйте = вместо +=:

## baz/Makefile.am
include $(top_srcdir)/common.am
AM_CPPFLAGS = -DBAZ
1 голос
/ 11 октября 2010

Я думаю, что вы ответили на свой вопрос: вам придется копировать новое правило в каждый make-файл.

0 голосов
/ 12 октября 2010

CPPFLAGS - это механизм, который вы, вероятно, должны использовать. Просто объедините нужные флаги где-нибудь в configure.ac:

GLOBAL_CPPFLAGS = "- DSOMETHING"

...

CPPFLAGS = "$ CPPFLAGS $ GLOBAL_CPPFLAGS"

и вы должны быть установлены.

...