Makefile的动态变量作为先决条件(Makefile dynamic variables as

2019-10-29 18:59发布

也许这是我得到的东西不对。 基本上,我的任务就是用make来自动化构建,部署,启动,停止的不同的服务。 其中一个是我想要做的事情是有一个变量作为目标的先决条件,但该变量在另一目标要被改变。

这里是什么,我试图做一个基本的例子:

IMAGE_COUNT=-1

count_images:
    $(eval IMAGE_COUNT=5)

_should_build: $(if $(findstring $(IMAGE_COUNT),0), build,)

build:
    ...some procedure to build...

start: _should_build
    ...some procedure to start a service... 

显然, $(IMAGE_COUNT)_should_build检查将留为-1,但我要的是有$(IMAGE_COUNT)先决条件检查过程中成为了5。 在这里要注意的事情是,我不能把外部图像的计数count_images目标。 有谁知道这是否可能呢?

Answer 1:

也许这是我得到的东西不对。

那个“东西”被称为评估顺序。

其中一个是我想要做的事情是有一个变量作为目标的先决条件,但该变量在另一目标要被改变。

没有一个目标 ,而是一个配方 。 食谱执行前进行预处理。 虽然先决条件进行预处理,在第一轮。 事实上,改变的情况下90%的配方里面化妆的变量的值是一个错误。 (还记得所有预处理进料配方的外壳前完成)。

有谁知道这是否可能呢?

一切皆有可能,当然,但不是这样。

需要注意的一件事是,我不能放置count_images目标外的图像的计数。

最可能的是,你可以。

无论如何,问题是,一些shell脚本(配方或配方的一部分)应该返回一个数字。 然而,这样的返回值不能被储存在一个化妆的变量。 重新考虑你的设计,并找到你的目标之间的通信的另一种方式。



文章来源: Makefile dynamic variables as prerequisites