Emperorプロジェクトでは、out-of-tree ビルドを行うときに intltool を機能させるのにいくつか問題があります。実行make check
することの 1 つであるツリー外で実行するとmake distcheck
、intltool は次のように失敗します。
INTLTOOL_EXTRACT="/usr/bin/intltool-extract" XGETTEXT="/usr/bin/xgettext" srcdir=../../po /usr/bin/intltool-update --gettext-package emperor --pot
can't open ../../po/../data/emperor.desktop.in: No such file or directory at /usr/bin/intltool-extract line 212.
emperor.desktop.in
intltool は、 にリストされpo/POTFILES.in
ている をソース ツリーで探します。ただし、ユーザーが構成したインストール済みの実行可能パスを挿入するためにemperor.desktop.in
、configure スクリプトによって というファイルから生成されemperor.desktop.in.in
、ビルド ツリーに配置されます。
関連するbootstrap.sh
行は次のとおりです。
echo +++ Running intltoolize ... &&
intltoolize --force --copy &&
cat >>po/Makefile.in.in <<EOF
../data/_column_names.h:
cd ../data && \$(MAKE) _column_names.h
EOF
のセットアップ コードconfigure.ac
:
IT_PROG_INTLTOOL([0.35.0])
GETTEXT_PACKAGE=emperor
AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], ["$GETTEXT_PACKAGE"],
[The domain to use with gettext])
AM_GLIB_GNU_GETTEXT
data/emperor.desktop.in
に記載されていAC_CONFIG_FILES
ます。
data/Makefile.am
次の行が含まれます。
desktopdir = $(datadir)/applications
desktop_in_files = emperor.desktop.in
desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
@INTLTOOL_DESKTOP_RULE@
行がpo/POTFILES.in
含まれています
data/emperor.desktop.in
必要に応じて、パブリック git リポジトリですべての詳細を確認できます。
このファイルがソース ツリーではなくビルド ツリーにあることを intltool に伝えることはできますか? それ以外の場合、私のオプションは壊れるmake distcheck
(優れたオプションではない) か、完全なパスを含まず、実行可能ファイルが PATH にインストールされていると想定するデスクトップ ファイルを出荷するようです。(同じくらい面倒です、私見) - 他に選択肢はありますか?