***没有规则使目标“全部”。停止

时间:2014-03-06 20:20:07

标签: unix makefile

我想做的就是将工作目录更改为“初始化”并编译我的程序(首先)。

OBJS = main.o create_queue.o
SOURCE = main.c create_queue.c
HEADER = create_queue.h
OUT = initialization
CC = gcc
FLAGS = -g -c
LIBS = -lpthread
# -g option enables debugging mode
all:
    $(MAKE) -C initialization all
    $(CC) -o $(OUT) $(SOURCE) $(LIBS)
# clean house
clean:
    rm -f $(OBJS) $(OUT)
# do a bit of accounting
count:
    wc $(SOURCE) $(HEADER)

所以使用上面的makefile我得到了这个错误:

vasilis@ubuntu:~/Vassilios$ make
make -C initialization all
make[1]: Entering directory `/home/vasilis/Vassilios/initialization'
make[1]: *** No rule to make target `all'.  Stop.
make[1]: Leaving directory `/home/vasilis/Vassilios/initialization'
make: *** [all] Error 2

假设我正常工作,我想将可执行文件从“初始化”文件夹移动到父文件夹(Vassilios),并为另外两个位于父文件夹的文件夹重复此过程。这些文件夹当然有不同的文件源。谢谢你。

1 个答案:

答案 0 :(得分:0)

如果查看initialization目录中的makefile,您会发现它没有all目标。

运行$(MAKE) -C initialization all告诉make:使用当前工作目录initialization启动一个新的make进程,并告诉make进程构建all。那个make进程失败了,因为initialization中的makefile不知道如何构建all