我正在尝试编译 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_
未定义宏的警告,所以这可能是相关的?
答案1
什么操作系统?
您的系统可能没有全部或部分 gettext 系统,即开发部分。在许多发行版中,例如 Debian/Ubuntu,gettext 被分为多个包:gettext-base
和gettext
。
该gettext-base
软件包用于运行多语言程序,同时gettext
具有构建所需的部分。
答案2
看来你autogen.sh
正在打电话autoreconf
。
该项目可能正在使用intltool
,但如果是这样,autoreconf
应该选择并调用intltoolize
.如果它确实使用 GNU gettext 那么autopoint
信息页面中的这个会很有帮助:
“autopoint”程序将标准 gettext 基础结构文件复制到源包中。它从包的“configure.in”或“configure.ac”文件中找到的“AM_GNU_GETTEXT_VERSION(VERSION)”形式的宏调用中提取包使用的 gettext 版本,并复制属于该版本的基础结构文件放入包中。
如果我们写AM_GNU_GETTEXT_VERSION
thenautopoint
就会被正确调用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