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

时间:2015-01-24 04:12:40

标签: makefile configure autotools autoconf

我有一个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来完成其余的项目目录,但是添加国际化的东西会让我陷入困境。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

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

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..."