Unix ***没有规则将目标设为“全部”;。停止

Unix ***没有规则将目标设为“全部”;。停止,unix,makefile,Unix,Makefile,我所要做的就是将工作目录更改为“初始化”并编译我的程序(首先) 因此,通过上面的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]: Lea

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

因此,通过上面的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

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

如果您查看
初始化
目录中的makefile,您将看到它没有
全部
目标


运行
$(MAKE)-C initialization all
告诉MAKE:用当前工作目录
initialization
启动一个新的MAKE进程,并告诉MAKE进程编译
all
。该生成过程失败,因为
初始化
中的生成文件不知道如何生成
所有

初始化文件夹中没有生成文件!我通过更改工作目录来访问源文件。那么,我如何实现我的目标呢?不清楚你的目标是什么。如果您只想构建一些位于不同目录中的文件,但使用相同的makefile,那么您根本不应该调用单独的make。只需谷歌搜索一下,就可以从make的其他目录中构建源文件。不需要在另一个目录中启动另一个make进程来编译那里的文件。现在我明白了。我只是在文件夹中写入makefile,然后从父文件夹的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