私はmakeで非常に新しいです。私は3つのラテックスファイルを生成するperlスクリプトを持っています。私は、perlスクリプトを実行するメイクファイルを作成し、新しく生成されたtexファイルに対してlualatexを実行したいと考えています。ルールはgnumakeで新しく生成されたファイルに対してコマンドを実行する
make:
perl diff.pl
pdf:
make
$(eval LIST := $(shell ls *.tex))
lualatex $(LIST).tex
make clean
clean:
rm -rf *.log *.aux
出力:これまでのところ、私は以下の持っている
lualatex FLAT_FLAT_AVDD.tex FLAT_FLAT_VDD.tex FLAT_FLAT_VSS.tex.tex
をそして、私は唯一の1つのPDF FLAT_FLAT_AVDD.pdfを取得します。 すべてのファイルでlualatexを実行するにはどうしたらいいですか? 私は3つの変数を宣言してmakeを実行できます。しかし、どうすればこれを自動化できますか? makeにループの概念はありますか?ファイル名を「ハードコーディング」することでこれを達成するより良い方法は何ですか?
ありがとうございました。 編集: foreach
を組み込みました。 make pdf
make:
perl diff.pl
list:
$(eval LIST := $(shell ls *.tex))
pdf:
make list
$(foreach tex,$(LIST),$(lualatex $(tex)))
make clean
clean:
rm -rf *.log *.aux
、その後、私が走ったが、私は、ターミナルで次の出力を得ました。
dedehog01:tislam1:243 > make pdf
make list
make[1]: Entering directory `/home/tislam1/Documents/THESIS/Script_v0.1/BOX_approach/Modified_Layout_mesh/IR_Report_mesh/flat_flat/make'
make[1]: `list' is up to date.
make[1]: Leaving directory `/home/tislam1/Documents/THESIS/Script_v0.1/BOX_approach/Modified_Layout_mesh/IR_Report_mesh/flat_flat/make'
make clean
make[1]: Entering directory `/home/tislam1/Documents/THESIS/Script_v0.1/BOX_approach/Modified_Layout_mesh/IR_Report_mesh/flat_flat/make'
rm -rf *.log *.aux
make[1]: Leaving directory `/home/tislam1/Documents/THESIS/Script_v0.1/BOX_approach/Modified_Layout_mesh/IR_Report_mesh/flat_flat/make'
あなたが描いたスケッチは_perl_を複数回実行します。 3つの '.tex'ファイルを作成するために一度だけ実行する必要があります。 – bobbogo