我已经看过了如何从make目标手动调用另一个目标?,但我的问题有些不同;考虑以下示例(注意,stackoverflow.com将制表符改为空格显示;但如果您尝试编辑,制表符将保留在源代码中):
TEXENGINE=pdflatex
pdflatex:
echo the engine is $(TEXENGINE)
lualatex:
TEXENGINE=lualatex
echo Here I want to call the pdflatex rule, to check $(TEXENGINE) there!
这里,如果我运行默认目标(pdflatex
),我会得到预期的输出:
$ make pdflatex
echo the engine is pdflatex
the engine is pdflatex
然而,对于目标lualatex
,我想要:
- 将
make
变量TEXENGINE
更改为lualatex
,然后 - 调用与
pdflatex
相同的代码(使用它)。
我该怎么做呢?
显然,在我的lualatex
规则中,我甚至没有成功地更改TEXENGINE
变量,因为我在尝试时得到了这个提示:
$ make lualatex
TEXENGINE=lualatex
echo Here I want to call the pdflatex rule, to check pdflatex there!
Here I want to call the pdflatex rule, to check pdflatex there!
...所以我真的想知道在Makefile中是否可能实现这样的功能。
pdflatex
。我建议使用类似于checkEngine
的东西,并将其设置为.PHONY
。 - Oliver Charlesworthpdflatex
是默认的,所以我只需使用make
或make pdflatex
即可获得相同的结果(然后可以通过将它们指定为make
目标来更改引擎,例如make lualatex
)。干杯! - sdaaumake TEXENGINE=whatever
,并构建一组通用的目标/规则,使用用户指定的TEXENGINE
变量? - Oliver Charlesworth:)
否则,我已经忘记了在make
命令行上使用变量 - 只是在写下面的答案时才想起。干杯! - sdaau