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


13.4.11 トップレベルのMakefile.in

以下は、トップレベルにあるメインのMakefile.inファイルにたいして必要な変更です。

  1. ゴール‘dist:’が正常に動作(以降で説明します)するように、Makefile.inの最初の部分に、以下の行を追加します:
    PACKAGE = @PACKAGE@
    VERSION = @VERSION@
    
  2. 定義DISTFILESに、ファイルABOUT-NLSを追加して、このファイルが配布されるように変更します。
  3. どのサブディレクトリーのMakefile.inを処理する場合でも、サブディレクトリー‘intl’および‘po’も処理するようにしてください。Makefiles内の特別なルールは、インターナショナリゼーションが必要ない場合を処理するためのものです。

    Makefilesを使用している場合、それがautomakeにより作成されたものか、手入力されたものかにかかわらず、GNUのコーディング規約にしたがうように注意してください。新しいサブディレクトリーを処理しなければならないために影響を受けるゴールには、‘installdirs’、‘install’、‘uninstall’、‘clean’、‘distclean’が含まれます。

    以下は標準的な処理順の例です。この例ではゴール‘dist:’のために使用されるSUBDIRSを、Makefile.inの中で定義しています。

    SUBDIRS = doc intl lib src po
    

    make’の調整では、ヘッダーファイルlibintl.hを使うコードが含まれるディレクトリーより、intlディレクトリーが前にくるように注意してください。intl の前に libsrcの前にintlがあるのは、これが理由です。

  4. デリケートなポイントは、intl/Makefilepo/Makefileの両方のゴール‘dist:’が、メインのMakefileによって、後から正しいディレクトリーにセットアップされる点です。以下はゴール‘dist:’がどのようなものかという例です:
    distdir = $(PACKAGE)-$(VERSION)
    dist: Makefile
    	rm -fr $(distdir)
    	mkdir $(distdir)
    	chmod 777 $(distdir)
    	for file in $(DISTFILES); do \
    	  ln $$file $(distdir) 2>/dev/null || cp -p $$file $(distdir); \
    	done
    	for subdir in $(SUBDIRS); do \
    	  mkdir $(distdir)/$$subdir || exit 1; \
    	  chmod 777 $(distdir)/$$subdir; \
    	  (cd $$subdir && $(MAKE) $@) || exit 1; \
    	done
    	tar chozf $(distdir).tar.gz $(distdir)
    	rm -fr $(distdir)
    

GNU automakeを使っているときは、Makefile.amからMakefile.inが自動的に生成されますが、Makefile.amに必要な修正は、‘gettextize’の実行よって修正済みであることに注意してください。