如何制作基本的C makefile?

时间:2017-11-25 07:42:36

标签: gcc makefile

我正在尝试为c中的hello world程序创建一个简单的Makefile 目前,我编译:

1
2
3
4
6
7
8
9
11
12
13
14
16
17
18
19
21
22
23
24
26
27
28
29
31
32
33
34
36
37
38
39
41
42
43
44
46
47
48
49

在Makefile中,到目前为止我所拥有的是:

gcc -Wall -std=c99 helloWorld.c

此外,这是一个标签,而不是第二行中的空格
当我输入make或make --trace时,我得到:

make:***未指定目标且未找到makefile。停止。

1 个答案:

答案 0 :(得分:2)

阅读documentation of make。请注意<{3}}中的 TAB 字符重要 - s(大多数其他Makefile系统,例如build automation,没有这个历史错误)。您的问题和我的答案没有显示这些标签,但您需要确保它们在那里(从几个空格开始的每个代码行应该以单个制表符开头)。

helloWorld.exe: helloWorld.c
    $(CC) $(CFLAGS) -o helloWorld.exe

错误。您未将helloWorld.c传递给gcc

至少你想要

 helloWorld.exe: helloWorld.c
     $(CC) $(CFLAGS) -o helloWorld.exe helloWorld.c

你可以(实际上应该)使用$@$^特殊制作ninja。还要了解内置规则(尝试make -p)。 也许在您的系统上只有helloWorld.exe: helloWorld.c而没有明确的操作可能就足够了。我建议使用适当规则的常规clean:目标。

调试Makefile:首先尝试make -n。然后make --trace并使用automatic variables-x

您会找到很多Makefile的例子,例如remake

确保在每个版本的{之后“清理文件树(使用好的 - 但仍然缺少 - clean目标然后make clean,或者手动删除任何目标文件和任何可执行文件) {1}}。

  

当我输入Makefilemake时,我得到:
  make --trace

这意味着您在错误的目录中运行make: *** No targets specified and no makefile found.命令。在运行make之前,请先检查makepwd您的this。它可能不是你所相信的。列出其中的文件(在Linux和POSIX上使用/bin/pwd,在MSDOS和Windows上使用ls;您应该至少看到DIRMakefile

另请检查您的working directory是否正确(例如,在POSIX系统上使用helloWorld.c)。

PS。我对echo $PATH后缀感到惊讶。在我的Linux系统上,我不使用也不需要它。