makefile的几点疑问

鉴于Makefile与C难舍难分,因此标签中添加c,希望知道的大佬给予解答。
下午看了一会Makefile的文章,有些疑问。
Makefile文件:

# Makefile is a binary file
main:fun.o main.o
        gcc -o main fun.o main.o

fun.o: fun.c
        gcc -c  fun.c

main.o: main.c
        gcc -c main.c

由于名字是Makefile因此直接输入make就可以,如果将上面文件重命名为xxx make xxx就可以了,但是make main也可以,这是什么原理?

后面我将Makefile改成如下形式

# Makefile is a binary file
main:fun.o main.o
        gcc -o main fun.o main.o
        ./main
        rm *.o

fun.o: fun.c
        gcc -c  fun.c

main.o: main.c
        gcc -c main.c

添加了./main与 rm *.o结果没有执行,这是为什么?

阅读 1.9k
2 个回答

删除.o等一般使用虚目标clean解决。
运行编译成果 使用虚目标 run 解决。

make使用-f参数指定makefile文件名。
make不带目标执行时 就去执行默认目标(第一个列出来的目标)

makefile对前导空白要求严格。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进