В руководстве AUTOCONF, следует отметить, чтоКак инкапсулировать определения макросов autotools?
AC_INIT (пакет, версия, [ошибка-отчет], [tarname], [URL])
определяет несколько имен макросов, таких как AC_PACKAGE_NAME и PACKAGE_NAME.
конфигурирование также создает файл конфигурация с определением, как следующее:
определяет HAVE_LIBGMP 1
Как я пишу C++ кода, я нахожу эти макросы раздражают, но полезными. Фактически, это случалось много раз, что мне нужно было связать с библиотекой, которая использует autotools и, таким образом, имеет эти макросы в своих заголовках. Таким образом, ситуация такова, что существует конфликт на заголовки макросов, таких как:
определяют PACKAGE_NAME «библиотеку»
определить PACKAGE_NAME «шахта»
Итак, мне было интересно, если есть способ, чтобы сказать Autotools чтобы определить, по крайней мере, некоторые из этих макросов в какой-то структуры следующим образом:
`struct header_information{
static string package_name;
static bug_report;
....
}`
, а затем инициализировать его с правильными макроимен. Это решение будет содержать эти инкапсулированные данные и не загрязняет глобальное пространство имен?
Проблема в том, что многие сторонники пакетов неправильно устанавливают 'config.h' и загрязняют глобальное пространство имен. Любой пакет, который устанавливает его 'config.h', должен иметь ошибку, поданную против него. –