首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Makefile,"nothing to be to for all“错误

Makefile,"nothing to be to for all“错误
EN

Stack Overflow用户
提问于 2015-02-23 08:35:47
回答 1查看 9.9K关注 0票数 2

所以我有一个make文件,存储在一个名为"temp“的目录中。下面的目录有一个src文件夹,有两个.c文件"file1.c”和"file2.c“。temp目录还包含一个include文件夹(它是空的)和一个bin文件夹(它是空的,直到make命令被设置为运行)。我目前正在尝试编译一个单独的.c文件(让它工作),但是一个文件似乎都不能在这里工作。

目录的外观如下所示:

代码语言:javascript
复制
temp

cd刻录到temp.

代码语言:javascript
复制
bin include Makefile src

这是我的makefile:

代码语言:javascript
复制
all:
    gcc -Wall -pedantic -std=c99 src/file1.c -Iinclude -o bin/runMe -lncurses

是的,在gcc的前面有一个标签。在这个令人沮丧的问题上,任何帮助都将不胜感激。此外,如果可能的话,任何关于编译第二个.c文件的输入也会非常有帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-23 09:31:39

Nothing to be done for TARGET意味着目标没有命令,在这种情况下,几乎可以肯定地说,您在gcc行上没有选项卡。

话虽如此,但这只是一个迫在眉睫的问题。这个makefile也没有遵循良好的实践,并且将不必要地重新编译您的程序(以及在创建all文件时完全停止工作)。

在最近删除的答案中,DrC有非常好的建议,关于如何改进你的makefile,以避免后两个问题。

具体地说,你的makefile应该看起来像这样:

代码语言:javascript
复制
.PHONY: all
all: bin/runMe

bin/runMe: src/file1.c
     gcc -Wall -pedantic -std=c99 $^ -Iinclude -o $@ -lncurses

这会将all目标标记为.PHONY,以便创建的all文件或目录不会混淆make,并在源文件上为构建的二进制文件设置先决条件,以便make可以知道何时需要(以及不需要)重建二进制文件。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28665275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档