GNU Autotools: AC_DEFINE не работает - PullRequest
2 голосов
/ 27 января 2012

Я полностью сбит с толку, пытаясь проверить его разными способами, но он все еще безумен.
Я пытаюсь определить переменную препроцессора C "DEBUG" (#define DEBUG), чтобы активировать ведение журнала отладки в проекте с открытым исходным кодом,он использует GNU Autotools.Поэтому я вставил строку

AC_DEFINE(DEBUG, 1, [My description for DEBUG])

в configure.ac .

Но что?После регенерации config.h

autoheader && ./config.status

я смотрю на содержимое config.h и вижу это

/* My description for DEBUG */  
/* #undef DEBUG */

Какого черта здесь произошло?Другие аналогичные переменные препроцессора C (по проекту) определяются таким же образом.Все они выглядели как "#define" и не комментировались, почему мой становится "#undef" и комментируется?
Так что я попробовал много способов сделать это, не только так, я подражаю тому, как другие символыПроект определен.Пробовал все виды значение , от 1 до ИСТИНА, ЛОЖЬ, все виды переменная , от "DEBUG" до "FOOBAR", "KJJJ" .... Но все равно работаетвот так, я полностью разочарован.


Больше информации:

Когда я смотрю на config.h.in , я вижу, что все строки такие:

#undef SOMEVARIABLE

(Включая мои определения AND те, которые действительно # определены в config.h .)

Когда яне запускайте autoheader и просто измените строку моей переменной в config.h.in на

#define DEBUG

, затем сгенерируйте config.h , затем мой DEBUGпеременная отображается корректно # define'd в config.h

* Autoconf версия 2.67
* Проект, над которым я работаю: ibus

Ответы [ 3 ]

3 голосов
/ 27 января 2012

Запуск autoheader изменяет config.h.in, но не config.status. config.status не знает об изменениях, внесенных вами в configure.ac, и не знает, как заменить DEBUG. Он не будет обновлен, пока вы не запустите autoconf и полученный скрипт configure.

2 голосов
/ 27 января 2012

Просто используйте autoreconf вместо вызова autoconf, automake и др. Вручную.

1 голос
/ 08 ноября 2015

Пожалуйста, поместите строку AC_DEFINE перед AC_OUTPUT.

...