0

、、からmakefile生成する部分があります:.pdf.ps.dvi.tex

...
$(FILE).pdf: $(FILE).tex $(SRC) $(DEPS)
    latex $(FILE).tex && \
    bibtex --min-crossrefs=500 $(FILE) && \
    latex $(FILE).tex && \
    latex $(FILE).tex && \
    dvips $(FILE).dvi -o $(FILE).ps && \
    ps2pdf $(FILE).ps $(FILE).pdf
...

$(FILE)に続く最初の引数として、コマンドラインから直接取得したいと思いますmake。たとえば、make paperコンパイルpaper.texして生成しpaper.pdfます。makeまた、ファイル名が指定されていないmake allコマンドを許可したくありません。

makeに続く最初の引数を渡す方法を教えてもらえます$(FILE)か?

4

2 に答える 2

0

ここには、必要な動作に応じて、いくつかのオプションがあります。(そして、私はあなたのコマンドを完全に理解しているかどうか確信が持てません.1つのラップされた行にする理由はないと思いますが、気にしないでください.)

事前にわかっているリストのターゲットのみを許可する場合:

FILES = scissors paper rock

$(FILES): % : %.tex $(SRC) $(DEPS)
    latex $*.tex && \
    ...

.texファイルが存在するターゲットのみを許可する場合:

% : %.tex $(SRC) $(DEPS)
    latex $*.tex && \
    ...

次に、望ましくないターゲットをどうするかについて説明します。警告で十分な場合:

all:
    @echo $@ is not a valid target

(real rule)

%:
    @echo $@ is not a valid target

Make を完全に中止させたい場合は、可能だと思いますが、もう少し考えなければなりません...

于 2012-04-25T23:15:58.210 に答える
0

これはどのようにmake機能するかではありません。makeおそらく、パラメーターを受け取り、それを検証し、Makefile を呼び出して、ファイルをmake変数として渡すシェル スクリプトを使用したいと思うでしょう。つまり、次のようなものです

make -f tex.mk FILE="$validated_filename"
于 2012-04-25T21:49:25.957 に答える