【问题标题】:*** No rule to make target `all'. Stop*** 没有将目标设为“全部”的规则。停止
【发布时间】:2014-03-06 20:20:06
【问题描述】:

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

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),并对位于父文件夹的另外 2 个文件夹重复该过程。这些文件夹当然有不同的文件来源。谢谢你。

【问题讨论】:

    标签: unix makefile


    【解决方案1】:

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

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

    【讨论】:

    • 初始化文件夹中没有makefile!我访问更改工作目录的源文件。那么,我该如何实现我的目标呢?
    • 不清楚您的目标是什么。如果您只想构建一些位于不同目录中的文件,但使用相同的 makefile,那么您根本不应该调用单独的 make。只需在使用 make 从其他目录构建源文件的帮助时四处搜索。无需在另一个目录中启动另一个 make 进程来编译文件。
    • 现在我明白了。我只是在文件夹中编写makefile,然后从父文件夹的makefile中调用它们
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-27
    • 2011-04-12
    • 2020-01-07
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多