致命错误是什么:***没有使目标“安装”的规则。停止

时间:2019-04-20 05:52:13

标签: makefile

当我尝试在ubuntu 16.04下运行命令make install时发生错误

*** No rule to make target 'install'. Stop.

我已经运行了make命令,但出现了几个错误fatal: bad revision 'HEAD',但这并没有导致命令停止。我不知道这些错误是否重要。

我的makefile代码为:

SUBDIRS := $(wildcard */.)

all: $(SUBDIRS)

$(SUBDIRS):
    make -C $@

install:
    for dir in $(SUBDIRS); do \
        make -C $$dir install; \
    done

.PHONY: all $(SUBDIRS)

具体地说,我想知道install:之后的makefile如何工作。

该项目应该在连接的手机Nexus 5上安装一个APP。但是实际上,我的手机上没有这样的APP。

1 个答案:

答案 0 :(得分:0)

我想您的Makefile格式正确,带有应该在其中的制表符等。

然后,当您在顶级目录中运行make install时,您的Makefile确实有一条规则使目标install:表示要在子目录上循环,请输入以下每个它们,然后在其中运行make install(这是-C选项的作用)。这些子制作中的一个失败,很可能是因为在其各自的子目录中找不到包含Makefile配方的install。当子命令失败时,循环将继续执行其余的子命令(除非通过-e开关指示了外壳,否则整个配方的最终返回代码将是返回代码)最后一个子品牌。

Makefile中有一些值得讨论的问题(例如,install应该被列为.PHONY目标),但是您没有提供足够的信息来阐明它们:例如,是否真的有必要让Shell以特定顺序遍历子目录?通常,更好的策略是使make尽可能并行化子make(并且,副作用是,make在第一个子make失败时停止……)