Когда список -DFOO=bar
определений становится слишком длинным, пусть autoconf
записывает все эти определения в один заголовочный файл (обычно называемый config.h
):
AC_INIT([pkg], [1.2.3], [bugs@example.com])
AC_CONFIG_HEADERS([internal/config.h])
Недостаток в том, что теперь вам нужно явно #include "config.h"
во всех ваших единицах компиляции около самого верха, чтобы более поздние #ifdef
s могли работать должным образом.
Кроме того, убедитесь, что вы используете autoreconf
вместо autoconf
сейчас, так как autoreconf
будет вызывать autoheader для поддержки файла config.h.in
, соответствующего вашему config.h
файлу, когда это необходимо. (Я почти всегда использую autoreconf -vis .
)
Если вы пишете библиотеку, убедитесь, что заголовочные файлы для общедоступного интерфейса НЕ включают файл config.h
вашей библиотеки, поскольку это вызовет конфликт имен с любым другим пакетом, использующим config.h
!
Документация Autoconf info по теме: Файлы заголовков конфигурации