Next: , Previous: , Up: Adjusting Files   [Contents][Index]


13.4.12 src/内のMakefile.in

メインのMakefile.inで行ったいくつかの修正は、あなたのパッケージソースのMakefile.in(ここではsrc/サブディレクトリーにあると仮定します)でも必要です。以下は、src/Makefile.in内で必要な修正のすべてです:

  1. ゴール‘dist:’を考慮して、src/Makefile.inの先頭の部分に以下の行が必要になります:
    PACKAGE = @PACKAGE@
    VERSION = @VERSION@
    
  2. まだ定義されていなければ、top_srcdirを定義する必要があります。これはcppのインクルードファイルのための定義で、以下の行を追加するだけです:
    top_srcdir = @top_srcdir@
    
  3. 後ですべてのMakefile.inで、一様なのゴール‘dist:’とするために、subdirを‘src’と定義したいと思うかもしれません。以下は、このゴール‘dist:’のために必要な定義です:
    subdir = src
    
  4. 以下のようにプログラムのmain関数は通常、bindtextdomain(Triggeringを参照してください)を呼び出します:
    bindtextdomain (PACKAGE, LOCALEDIR);
    textdomain (PACKAGE);
    

    プログラムにLOCALEDIRを知らせるために、以下の行をMakefile.inに追加します(Autoconfのバージョン2.60以降の場合):

    datadir = @datadir@
    datarootdir= @datarootdir@
    localedir = @localedir@
    DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@
    

    Autoconfのバージョンが2.60より古い場合は、以下の行を追加します:

    datadir = @datadir@
    localedir = $(datadir)/locale
    DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@
    

    @datadir@のデフォルトは‘$(prefix)/share’なので、$(localedir)のデフォルトは、‘$(prefix)/share/locale’になることに注意してください。

  5. あなたは最後のリンクで、ライブラリーとして@LIBINTL@または@LTLIBINTL@が使われることを保証する必要があります。@LIBINTL@libtoolなしで使用され、@LTLIBINTL@libtoolとともに使用されます。これを達成するには、以下のようにこれらをLIBSで管理します:
    LIBS = @LIBINTL@ @LIBS@
    

    GNU gettextでインターナショナライズされたパッケージには、ヘルパー関数を含むライブラリーを、ディレクトリーlib/にビルドするものがたくさんあります(少なくともGNU gettextライブラリー自身が必要とするいくつかの関数が必要です)。しかしlib/の中の関数のいくつかは、ユーザーに翻訳が必要なメッセージをあたえる関数です。これに注意してサポートのためのライブラリー (libsupport.aとしましょう)を、上記の例の@LIBINTL@@LIBS@の前に配置します:

    LIBS = ../lib/libsupport.a @LIBINTL@ @LIBS@
    
  6. あなたは、あらゆる状況において、ディレクトリーintl/が、Cプリプロセッサーに検索されることも保証する必要があります。そのためには、‘-I../intl’と‘-I$(top_srcdir)/intl’の両方がCコンパイラーに与えられるように管理する必要があります。
  7. ゴール‘dist:’は、他のものと一致している必要があります。以下はそのための合理的な定義です:
    distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
    dist: Makefile $(DISTFILES)
    	for file in $(DISTFILES); do \
    	  ln $$file $(distdir) 2>/dev/null || cp -p $$file $(distdir) || exit 1; \
    	done
    

GNU automakeを使用している場合、Makefile.inMakefile.amから自動的に生成されるので、最初の3つと最後の変更は必要ないことに注意してください。Makefile.amに必要な変更は以下になります:

  1. プログラムにLOCALEDIRを知らせるために、特定のモジュールにたいしては以下の行を:
    <module>_CPPFLAGS = -DLOCALEDIR=\"$(localedir)\"
    

    またはコンパイル単位については以下のようにMakefile.amに記述します。

    AM_CPPFLAGS = -DLOCALEDIR=\"$(localedir)\"
    

    これはすべてのモジュール、またはコンパイル単位のためのものです。さらにAutoconfのバージョンが2.60より古いものを使用している場合、以下の行を追加して‘localedir’を定義します:

    localedir = $(datadir)/locale
    
  2. 最後のリンクが@LIBINTL@または@LTLIBINTL@を使うことを保証するために、以下をMakefile.amに追加します:
    <program>_LDADD = @LIBINTL@
    

    特定のプログラムごとには上記のように記述します。

    LDADD = @LIBINTL@
    

    これはすべてのプログラムの場合です。プログラムのリンクにlibtoolを使うときは、プログラム用に@LIBINTL@ではなく、@LTLIBINTL@を使う必要があることを忘れないでください。

  3. intl/ディレクトリーがあり、その内容がgettextizeにより作成されたものである場合は、以下のような行をMakefile.amに追加して、すべての状況において、Cプリプロセッサーがインクルード ファイルをそこから検索することを保証するようにしてください:
    AM_CPPFLAGS = -I../intl -I$(top_srcdir)/intl