configure.ac: не использовать gettext

13

Я пытаюсь скомпилировать приложение gnome, и мне интересно, что означает вывод, когда я запускаю autogen.shскрипт:

~/Documents/Code/window-picker-applet $./autogen.sh
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal 
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --install --copy
libtoolize: Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
autoreconf: running: /usr/bin/autoconf
autoreconf: running: /usr/bin/autoheader
autoreconf: running: automake --add-missing --copy --no-force
data/Makefile.am:11: `%'-style pattern rules are a GNU make extension
data/Makefile.am:11: wildcard $(top_srcdir: non-POSIX variable name
data/Makefile.am:11: (probably a GNU make extension)
autoreconf: Leaving directory `.'
[Output trunkated...]

Почему я получаю информацию configure.ac: not using Gettext? Это предупреждение, и я должен изменить некоторые файлы конфигурации, чтобы это исправить? Я знаю, что у приложения есть po/папка, поэтому я думаю, что оно должно использовать Gettext, поэтому я запутался в этом предупреждении.

У меня также было много предупреждений с N_не определенным макросом, так что это может быть связано? [Обновить] См. Комментарий ниже [/ Обновить]

lanoxx
источник
Проблема с макросами N_, которые не были определены, была из-за отсутствия необходимого include (glib / gi18n.h). Ранее он был включен в другой файл включения (gtk / gtk.h), но он был удален в последней версии gtk +.
lanoxx

Ответы:

1

Похоже, ваш autogen.shзовет autoreconf.

Проект может использовать intltoolвместо этого, но если это так, autoreconfследует взять это и позвонить intltoolize. Если он определенно использует GNU gettext, то это autopointполезно на странице информации:

Программа 'autopoint' копирует стандартные файлы инфраструктуры gettext в исходный пакет. Он извлекает из вызова макроса в форме «AM_GNU_GETTEXT_VERSION (VERSION)», найденного в файле пакета «configure.in» или «configure.ac», версию gettext, используемую пакетом, и копирует файлы инфраструктуры, принадлежащие этой версии в пакет.

И если мы пишем, AM_GNU_GETTEXT_VERSIONто autopointправильно вызывается autoreconf.

Чтобы извлечь последнюю доступную инфраструктуру, которая удовлетворяет требованию к версии, вместо этого вы можете использовать форму «AM_GNU_GETTEXT_REQUIRE_VERSION (VERSION)». Например, если в вашей системе установлен gettext 0.19.8 и запрашивается «0.19.1», то файлы инфраструктуры версии 0.19.8 будут скопированы в исходный пакет.

Проблема появляется только при переключении на эту версию макроса, и пока он делает то, что говорит на жестяной коробке, он не известен, autoreconfи мы видим патч для поддержки .

Пользователи Gentoo могут получить то же поведение в ebuilds, используя нашу eautoreconfфункцию.

Запись AM_GNU_GETTEXT_VERSIONи AM_GNU_GETTEXT_REQUIRE_VERSIONсразу после этого по-моему configure.acвыдает предупреждение, но в остальном, похоже, дает желаемый результат.

arfbtwn
источник
5

Какая ОС?

Вероятно, в вашей системе нет всей или части системы gettext, а именно частей для разработки. Во многих дистрибутивах, например Debian / Ubuntu, gettext разделен на несколько пакетов: gettext-baseи gettext.

gettext-baseПакет для запуска программ , которые многоязычные, в то время как gettextесть необходимые детали для строительства.

Эндрю Шляйфер
источник
Я работаю на Ubuntu (11.10). Gettext установлен, но не gettext-base.
lanoxx
Я имею дело с исправлением (через код src + ./configure) старой платформы, созданной в Fedora с большим количеством кода, и я столкнулся с этой проблемой. Установка gettext и переконфигурирование в autoconf / autogen / m4 пока не помогли. Я заметил, что pkg-config не считает, что getttext установлен. Но я заметил, что pkg-config в более современных системах также не содержит gettext, даже если установлена ​​gettext-base.
MCR