Как передать и использовать аргументы в ./configure? - PullRequest
1 голос
/ 01 февраля 2011

Я хотел бы иметь возможность передавать аргументы скрипту ./configure, чтобы он добавил NDEBUG, используемый мной, в мой сгенерированный заголовочный файл. Как я могу это сделать? Мой configure скрипт генерируется из configure.ac.

У меня уже один отличный ответ, но, похоже, у меня вопрос неправильный. Опция должна удалить это NDEBUG, потому что по умолчанию я хотел бы отключить утверждения. AC_UNDEFINE не существует, поэтому мне нужно использовать некоторую хитрость: определить ASSERT_ON, которая отключит NDEBUG. Есть ли более простой, лучший способ?

Ответы [ 2 ]

2 голосов
/ 01 февраля 2011

Вы захотите использовать макрос AC_ARG_ENABLE () в вашем файле configure.ac для запуска действия, когда кто-то добавляет --enable-foo в параметры командной строки.

AC_ARG_ENABLE(foo, "used to turn on the NDEBUG flag",
  [ AC_DEFINE(NDEBUG) ]
)
0 голосов
/ 24 сентября 2012

Вы можете использовать AH_VERBATIM для добавления дополнительных данных в ваш config.h.in (и, следовательно, config.h файл).

Дело в том, что autoconf собирается закомментировать все, что выглядит как оператор #undef при создании файла config.h из шаблона.

Существует способ препроцессора, чтобы избежать этого: используйте #/**/undef/**/. Препроцессор C собирается сначала удалить комментарии, но autoconf не увидит это как оператор #undef.

Подведем итог, чтобы заставить NDEBUG быть неопределенным:

AH_VERBATIM([NDEBUG], [/* Never ever ignore assertions */
#ifdef NDEBUG
#/**/undef/**/ NDEBUG
#endif])
...