当我尝试在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。
答案 0 :(得分:0)
我想您的Makefile格式正确,带有应该在其中的制表符等。
然后,当您在顶级目录中运行make install
时,您的Makefile
确实有一条规则使目标install:
表示要在子目录上循环,请输入以下每个它们,然后在其中运行make install
(这是-C
选项的作用)。这些子制作中的一个失败,很可能是因为在其各自的子目录中找不到包含Makefile
配方的install
。当子命令失败时,循环将继续执行其余的子命令(除非通过-e
开关指示了外壳,否则整个配方的最终返回代码将是返回代码)最后一个子品牌。
Makefile
中有一些值得讨论的问题(例如,install
应该被列为.PHONY
目标),但是您没有提供足够的信息来阐明它们:例如,是否真的有必要让Shell以特定顺序遍历子目录?通常,更好的策略是使make
尽可能并行化子make(并且,副作用是,make
在第一个子make失败时停止……)