我正在尝试为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。停止。
答案 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}}。
当我输入
Makefile
或make
时,我得到:
make --trace
这意味着您在错误的目录中运行make: *** No targets specified and no makefile found.
命令。在运行make
之前,请先检查make
或pwd
您的this。它可能不是你所相信的。列出其中的文件(在Linux和POSIX上使用/bin/pwd
,在MSDOS和Windows上使用ls
;您应该至少看到DIR
和Makefile
。
另请检查您的working directory是否正确(例如,在POSIX系统上使用helloWorld.c
)。
PS。我对echo $PATH
后缀感到惊讶。在我的Linux系统上,我不使用也不需要它。