在Makefile目标中使用标志

问题描述 投票:0回答:1

假设我有一个像这样的Makefile:

(more Makefile code)

%_dev.pdf: %.csv
    # do stuff that

%_prod.pdf: %.csv
    # do stuff

我希望能够快速运行开发者并长时间运行产品。上面的代码反映了这一点。但是,这导致了冗余代码。所以我想做这样的事情:

MODE?=dev

%_$(MODE).pdf: %.csv
    # do stuff

这有效吗?看来我在混用不同的概念,可能会遇到问题。在目标中实施某种切换的首选方法是什么?

makefile
1个回答
0
投票

您的验证码有效。

代替后缀,您可以构建到另一个目录:

MODE := dev # Immediate assignment, make MODE=prod overrides it.
build_dir := ${MODE}

${build_dir}/%.pdf : %.csv | ${build_dir}
    # commands

${build_dir} :
    mkdir -p $@
© www.soinside.com 2019 - 2024. All rights reserved.