Automake

configure.ac:不使用 gettext

  • July 16, 2017

我正在嘗試編譯一個 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_未定義宏的警告,所以這可能是相關的? $$ Update $$請參閱下面的評論$$ /Update $$

看起來你autogen.sh在打電話autoreconf

該項目可能正在使用intltool,但如果是這樣,autoreconf應該拿起它並呼叫intltoolize. 如果它肯定使用 GNU gettext,那麼autopoint資訊頁面中的這個很有幫助:

‘autopoint’ 程序將標準 gettext 基礎結構文件複製到源包中。它從包的“configure.in”或“configure.ac”文件中的“AM_GNU_GETTEXT_VERSION(VERSION)”形式的宏呼叫中提取包使用的gettext版本,並複制屬於該版本的基礎設施文件放入包中。

如果我們寫AM_GNU_GETTEXT_VERSIONthenautopoint被正確呼叫autoreconf

要提取滿足版本要求的最新可用基礎架構,您可以改用“AM_GNU_GETTEXT_REQUIRE_VERSION(VERSION)”形式。例如,如果您的系統上安裝了 gettext 0.19.8 並且請求了“0.19.1”,那麼版本 0.19.8 的基礎結構文件將被複製到源包中。

該問題僅在切換到此版本的宏時出現,雖然它按照它在錫上所說的那樣做,但我們不知道它是什麼autoreconf,我們看到了一個支持更新檔

通過使用我們的函式,Gentoo 使用者可以在 ebuilds 中獲得相同的行為。eautoreconf

在我自己的寫作AM_GNU_GETTEXT_VERSIONAM_GNU_GETTEXT_REQUIRE_VERSION之後立即configure.ac生成一個警告,但在其他方面似乎會產生預期的結果。

什麼作業系統?

您的系統可能沒有全部或部分 gettext 系統,即開發部分。在許多發行版中,例如 Debian/Ubuntu,gettext 被分成多個包:gettext-basegettext.

gettext-base軟體包用於執行多語言程序,同時gettext具有建構所需的部分。

引用自:https://unix.stackexchange.com/questions/30748