⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

C Makefile 入门

学习使用Makefile自动化多文件C项目的编译过程,提高开发效率。 · 难度:入门 · +15XP

什么是Makefile

Makefile 是一个自动化构建工具,它定义了一系列规则,告诉 make 命令如何编译和链接程序。当你修改了某个源文件后,make 只会重新编译受影响的文件,大大节省时间。

Makefile 基本语法

一个规则由目标(target)、依赖(prerequisites)和命令(recipe)组成:

target: prerequisites
	command

注意:命令前面必须有一个 Tab 键,不能是空格。

简单示例

假设项目有 main.cutils.c,Makefile 如下:

CC = gcc
CFLAGS = -Wall -g

program: main.o utils.o $(CC) $(CFLAGS) -o program main.o utils.o

main.o: main.c utils.h $(CC) $(CFLAGS) -c main.c

utils.o: utils.c utils.h $(CC) $(CFLAGS) -c utils.c

clean: rm -f *.o program

常用命令:

变量与自动变量

Makefile 支持变量,例如 $(CC)。自动变量如 $@ 表示目标文件名,$^ 表示所有依赖文件,$< 表示第一个依赖文件。优化后的版本:

CC = gcc
CFLAGS = -Wall -g

program: main.o utils.o $(CC) $(CFLAGS) -o $@ $^

%.o: %.c utils.h $(CC) $(CFLAGS) -c $< -o $@

clean: rm -f *.o program

表格:常用 Makefile 变量

变量说明
CCC 编译器,默认 cc
CFLAGS编译选项,如 -Wall -O2
LDFLAGS链接选项
LDLIBS链接的库,如 -lm

练习提示

在右侧编辑器中,编写一个简单的 Makefile,包含 main.chello.c 两个源文件,并添加 clean 目标。尝试运行 makemake clean,观察输出。

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 105 篇
0 完成
🔥 0