2026/5/20 1:20:31
网站建设
项目流程
个人建设网站维护费是多少,全网搜索,辽宁网站制作,泰安飞讯网络有限公司基本概念
Makefile 是工程管理工具#xff0c;用于编译多个源文件#xff08;可能在不同目录下#xff09;#xff0c;可以添加编译选项。
基本语法规则
makefile
目标: 依赖
[TAB] 规则命令
版本演进
版本1#xff1a;直接编译
makefile
a.out: main.c func.cgcc…基本概念Makefile 是工程管理工具用于编译多个源文件可能在不同目录下可以添加编译选项。基本语法规则makefile目标: 依赖 [TAB] 规则命令版本演进版本1直接编译makefilea.out: main.c func.c gcc main.c func.c -o a.out版本2使用内置变量makefilea.out: main.c func.c gcc $^ -o $ # 不需要依赖文件 clean: rm a.out内置变量说明$^在本条规则中表示所有的依赖文件$在本条规则中表示目标文件执行示例# 第一次编译 linuxubuntu:~/20251103/os_app/Make$ make # 源文件未被修改时再次编译 linuxubuntu:~/20251103/os_app/Make$ make make: a.out is up to date. # 清理生成的文件 make clean说明当产生目标文件的相关源文件没有被修改没有被更新时Make 不会重新编译。版本3使用自定义变量makefile# 定义变量 SRC main.c SRC func.c # 追加变量 APP a.out FLAG -g # 编译选项如调试信息 $(APP): $(SRC) gcc $^ -o $ $(FLAG) clean: rm $(APP)变量说明SRC源文件列表APP生成的可执行文件名FLAG编译选项如-g用于调试相关源文件main.c#include stdio.h #include func.h int main() { int a 10; int b 20; int c add(a, b); printf(add is %d\n, c); c sub(a, b); printf(sub is %d\n, c); }func.cint add(int a, int b) { return a b; } int sub(int a, int b) { return a - b; }func.h#ifndef __FUNC_H_ #define __FUNC_H_ int add(int a, int b); int sub(int a, int b); #endif注意事项Makefile 文件名可以是makefile或Makefile建议使用后者命令前的缩进必须是 Tab 键不能是空格当执行make命令后会在当前目录下查找 Makefile 文件make clean用于清理生成的文件Make 会检查文件的更新时间如果依赖文件比目标文件新才会重新编译完整示例 Makefilemakefile# 变量定义 SRC main.c func.c APP a.out FLAG -g # 默认目标 $(APP): $(SRC) gcc $^ -o $ $(FLAG) # 清理规则 clean: rm -f $(APP)这个 Makefile 实现了一键编译所有源文件生成可执行文件支持调试选项提供清理功能自动判断是否需要重新编译