假设我有一个像这样的Makefile:
(more Makefile code)
%_dev.pdf: %.csv
# do stuff that
%_prod.pdf: %.csv
# do stuff
我希望能够快速运行开发者并长时间运行产品。上面的代码反映了这一点。但是,这导致了冗余代码。所以我想做这样的事情:
MODE?=dev
%_$(MODE).pdf: %.csv
# do stuff
这有效吗?看来我在混用不同的概念,可能会遇到问题。在目标中实施某种切换的首选方法是什么?
您的验证码有效。
代替后缀,您可以构建到另一个目录:
MODE := dev # Immediate assignment, make MODE=prod overrides it.
build_dir := ${MODE}
${build_dir}/%.pdf : %.csv | ${build_dir}
# commands
${build_dir} :
mkdir -p $@