终端自己也自带编译按键。如图: 我们可以看到使用make命令+想要的运行文件,会自动调用系统自带的cc编译器生成该文件,但是规则是自能成.c文件生成文件,即hello.c–>hello其他的就做不到了。这是因为系统默认一个make文件存在,我们也可以自己编写makefile文件。 例如我想把hello.c文件编译成hello文件,你就可以自己创建一个makefile文件,并在里面写下几行命令: 保存退出,输入make命令: 我们可以看到,它直接给我们进行了gcc命令,并生成了hello文件,正如我们在make文件里面所写的命令。有人会觉得这是多此一举,直接gcc编译不是更省事。 对于一个文件来说可能不用makefile更省事,但是对多个文件编译来说,makefile绝对是超级省事的,我们可以在里面输入我们的编译规则,比如把当前目录的所有.c文件编译。如果你是一个个去编译,那么有多少个文件你就要写多少个命令,而我们只要输入make就行。具体参考图: 我的makefile文件里面的内容可能会出乎初学者的想象: 下面来详细介绍下makefile: 1个规则: 目标:依赖条件 1.你生成的目标时间必须晚于依赖条件的目标否则更新文件,这也就可以使程序用不用每次make都make所有文件。 2.依赖条件如果不存在,将会向下寻找新的条件产生依赖条件: 例如:
`
hello:hello.o //我们只有hello.c文件 gcc hello.o -o hello hello.o:hello.c gcc hello.c -c hello.c`` 2个函数:
src=$(wildcard *.c): 默认把当前目录下的所有.c文件组成表传给src,你也可以修该文件路径。target= ( p a t s u b s t (patsubst %.c,%.o, (patsubst(src)): 默认把src里的所有.c文件替换为.o文件,你也可以替换为想要的文件比如就是原名%,具体要看你的需求。 补充: all:$(target) 设置最后生成的目标 clean:-rm -rf $(target) 一键清理所生成的目标 .PHONY: 生成伪目标,不会被系统函数干扰,比如系统自带clean函数 3个自动变量: $<:规则第一个依赖条件 $^:规则所有依赖条件 $@:规则目标(注意:只能出现在依赖条件中)学会利用makefile后,可以很方便地扩展你的程序。