Make简介 —— 工程管理器,顾名思义,是指管理较多的文件 —— Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它 能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同 时,它通过读入的Makefile文件的内容来执行大量的编译工作。 —— Make将只编译改动的代码文件,而不用完全编译。 Makefile基本结构 —— Makefile是Make读入的唯一配置文件 —— 由make工具创建的目标体(target),通常是目标文件或执行文件 —— 要创建的目标体所依赖的文件(dependency_file) —— 创建每个目标体时需要运行的命令(command) —— 注意:命令行前面必须是一个"TAB键",否则会编译错误 Makefile格式 target: dependency_file command 例: hello.o: hello.c hello.h gcc -c hello.c -o hello.o make命令 —— make命令格式 make [options] [target] 选项 含义 -C dir读入指定目录下的Makefile -f file读入当前目录下的file文件作为Makefile -i 忽略所有的命令执行错误 -I dir指定被包含的Makefile所在目录 -n 只打印要执行的命令,但不执行这些命令 -p 显示make变量数据库和隐含规则 -s 在执行命令时不显示命令 -w 如果make在执行过程中改变目录,打印当前目录名 Makefile的隐含规则 —— 隐含规则1:编译C程序的隐含规则 "<n>.o"的目标的依赖目标会自动推导为"<n>.c",并且其生成的命令 是"$(CC) -c $(CPPFLAGS) $(CFLAGS)" —— 隐含规则2:链接Object文件的隐含规则 "<n>"目标依赖"<n>.o",通过运行C的编译器来运行链接程序生成( 一般是"ld"),其生成命令是:"$(CC) $(LDFLAGS) <n>.o"