发生错误时,Makefile是否可以执行代码?

时间:2013-03-22 11:27:55

标签: makefile

在我的Makefile中,我有一些代码可以检查网络连接。这段代码需要相当长的时间才能运行,我只想在另一个目标无法构建的情况下运行它。

当前Makefile

all: files network
    # compile files

files:
    # get files from network resources

network:
    # check for network connectivity
    # echo and return an error if it's not available

执行顺序:

if not network:
    # exit with error
if not files:
    # exit with error
if not all:
    # exit with error

Desired Makefile

在上面的例子中,我希望network目标是“制作”的,只有files目标无法“制作”。

执行顺序:

if not files:
    if not network:
        # exit with error
if not all:
    # exit with error

1 个答案:

答案 0 :(得分:19)

递归制作是你的朋友,我很害怕。

.PHONY: all
all:
    ${MAKE} files || ${MAKE} network

如果make files成功,您的工作就完成了,退出代码就成功了。失败时,退出代码为make network