1

テキストファイルからのPDFファイルの生成を制御するmakeファイルを編集しようとしています(慣れている場合はSphinx)。現在、ドキュメントごとに 1 つの make ファイル (1 つのソース ディレクトリと 1 つのビルド ディレクトリがある場所) が存在するようにセットアップされていますが、ディレクトリ構造を微調整し、make がコマンドは「make latexpdf」と呼ばれ、pdf はすべてのドキュメントに対して生成されます。

これは、変数を定義するときに何らかのワイルドカード システムを使用することで実現できると思いますが、これには問題があります。

現時点では、次のように設定されています: (関連する行のみを含めました)

BUILDDIR      = builddir  
SOURCEDIR     = sourcedir    
$(SPHINXBUILD) some options $(SOURCEDIR) $(BUILDDIR)/latex  
$(MAKE) -C $(BUILDDIR)/latex all-pdf   

しかし、ソースディレクトリの各サブディレクトリを通過させ、同じ名前のサブディレクトリにビルドできるようにするには、次のようなことができると思いました:

EACHDIR       = {"subdir 1","subdir 2"}   #This is the line that I need help with.                                          
                                    #subdir refers to each document that I'm making    
BUILDDIR      = builddir/$(EACHDIR)    
SOURCEDIR     = sourcedir/$(EACHDIR)    
$(SPHINXBUILD) some options $(SOURCEDIR) $(BUILDDIR)/latex    
$(MAKE) -C $(BUILDDIR)/latex all-pdf    

しかし、これは私にはうまくいきません。任意のガイダンスをいただければ幸いです。

ありがとう

4

1 に答える 1

1

私はこのようなことをします:

SUBDIRS = subdir1 subdir2

BUILDDIR = builddir
SOURCEDIR = sourcedir

# Define each subdir as a target
$(SUBDIRS):
    $(SPHINXBUILD) $(SOURCEDIR)/$@ $(BUILDDIR)/$@/latex
    $(MAKE) -C $(BUILDDIR)/$@/latex all-pdf

# However, these targets aren't real files, so declare them as phony
.PHONY: $(SUBDIRS)

これはうまくいくはずです(タイプミスにもかかわらず)。

ただし、一般に、Make の再帰呼び出しは避ける必要があります ( Recursive Make Considered Harmful を参照)。基本的に、最上位の Make が依存関係ツリー全体を追跡するのを防ぎます。これにより、最適でないビルド プロセスや一貫性のない再構築が発生する可能性があります。

于 2012-07-20T10:15:06.793 に答える