使用intltool时,Makefile.in.in 如何更改为Makefile



我有一个GTK项目,我正在尝试国际化。我需要帮助理解 intltool 包中的 po/Makefile.in.in 如何转换为 Makefile.in 然后转换为 Makefile 的基本工作流程。

我的直接问题是 Makefile.in 与 Makefile.in.in 相同。我得到很多错误,比如@SHELL@没有定义,显然是因为在某个地方没有替换宏/变量,以及许多其他@srcdir@和@topdir@。如果我删除 Makefile.in,则没有规则可以从 Makefile.in.in 创建它。

我更大的问题是,在这种情况下,我对整个工具链如何生成 Makefile 感到模糊。我在其余的项目目录中使用 aclocal/autoconf/configure 过得去,但添加国际化的东西让我陷入了循环。感谢您的任何帮助。

我想

我找到了自己问题的答案。以下链接有所帮助:

https://www.mail-archive.com/gtkmm-list@gnome.org/msg13483.html

主要是,我不得不改变

AC_CONFIG_FILES(po/Makefile)

AC_CONFIG_FILES(po/Makefile.in)

并使用该站点上建议的 autogen.sh 脚本,而不是我正在使用的脚本,即:

#!/bin/sh
mkdir -p m4
echo "Creating m4/aclocal.m4 ..."
test -r m4/aclocal.m4 || touch m4/aclocal.m4
echo "Running glib-gettextize... Ignore non-fatal messages."
echo "no" | glib-gettextize --force --copy
echo "Making m4/aclocal.m4 writable ..."
test -r m4/aclocal.m4 && chmod u+w m4/aclocal.m4
echo "Running intltoolize..."
intltoolize --force --copy --automake || return 1
echo "Running aclocal..."
aclocal || return 1
echo "Running libtoolize..."
libtoolize || return 1
echo "Running autoheader..."
autoheader || return 1
echo "Running autoconf..."
autoconf || return 1
echo "Running automake..."
automake --add-missing || return 1
echo "You should now run ./configure..."

最新更新