python环境搭建Makefile简单使用步骤

 更新时间:2026年02月07日 10:48:29   作者:serve the people  
Makefile是一种自动化构建工具,通过定义规则、依赖关系和执行命令,替代手动重复敲编译、运行和清理等指令,提升开发效率,本文给大家介绍python环境搭建Makefile简单使用方法,感兴趣的朋友跟随小编一起看看吧

Makefile 简单使用方法

Makefile 是自动化构建工具,核心作用是定义项目的构建规则、依赖关系和执行命令,通过 make 命令自动执行,替代手动重复敲编译/运行/清理等指令,大幅提升开发效率,尤其适合C/C++项目,也可用于Python/Go等各类项目的自动化流程管理。

一、Makefile 核心规则(最基础、最核心)

Makefile 的核心是规则,一个规则对应一个构建目标,基本格式固定,命令行前必须用 Tab 键缩进(空格会报错,这是最常见的坑):

# 格式:目标: 依赖文件/依赖目标
# 	    执行的命令(Tab 开头,可多行)
目标(target): 依赖(dependencies)
	命令1(shell 命令均可,如gcc、rm、python等)
	命令2
  • 目标:要生成的文件(如可执行文件、目标文件)或「伪目标」(如clean、run,无实际文件生成);
  • 依赖:生成目标所需的文件/其他目标(如编译可执行文件需要的.c源文件);
  • 命令:从依赖生成目标的shell指令,按顺序执行。

二、最简入门示例(编译单个C文件)

以编译C文件 main.c 生成可执行文件 app 为例,创建名为 Makefile(或 makefile,首字母大小写均可)的文件,内容如下:

# 最简Makefile:生成可执行文件app
app: main.c
	gcc main.c -o app  # Tab 开头,编译命令
# 清理目标:删除生成的可执行文件
clean:
	rm -f app  # -f 强制删除,避免文件不存在时报错

执行命令(终端在Makefile同级目录)

make        # 执行第一个目标(app),自动编译
make clean  # 执行clean目标,清理生成的文件

三、核心实用特性(简单易上手)

1. 伪目标(.PHONY):避免与同名文件冲突

如果目录下有个文件叫 clean,直接执行 make clean 会失效,用 .PHONY 声明「伪目标」,表示这不是实际要生成的文件,强制执行命令:

.PHONY: clean  # 声明clean为伪目标
app: main.c
	gcc main.c -o app
clean:
	rm -f app

常用伪目标all(构建所有目标)、clean(清理)、run(运行程序)、install(安装)。

2. 变量:简化重复代码,方便统一修改

定义变量后用 $(变量名) 引用,适合重复使用的内容(如编译器、编译参数、源文件),修改一处即可全局生效:

.PHONY: clean run
CC = gcc        # 定义编译器变量
CFLAGS = -Wall  # 编译参数(-Wall 显示所有警告)
TARGET = app    # 可执行文件名称
SRC = main.c    # 源文件
# 引用变量,简化规则
$(TARGET): $(SRC)
	$(CC) $(SRC) -o $(TARGET) $(CFLAGS)
run: $(TARGET)  # 运行目标,依赖app(先编译再运行)
	./$(TARGET)
clean:
	rm -f $(TARGET)

执行 make run,会自动先编译 app,再运行 ./app

3. 多目标/多依赖:适配多个源文件的场景

如果项目有 main.cfunc.c 两个源文件,直接将多个依赖写在目标后即可:

.PHONY: clean
CC = gcc
TARGET = app
# 多依赖:生成app需要main.c和func.c
$(TARGET): main.c func.c
	$(CC) main.c func.c -o $(TARGET)
clean:
	rm -f $(TARGET)

4. 默认目标:Makefile 第一个目标

make 命令不加任何参数时,会自动执行第一个目标,通常用 all 作为第一个目标,指定要构建的所有核心目标:

.PHONY: all clean run  # all作为第一个目标,成为默认目标
all: app  # all依赖app,执行make即执行make all,编译app
CC = gcc
TARGET = app
SRC = main.c
$(TARGET): $(SRC)
	$(CC) $(SRC) -o $(TARGET)
run: $(TARGET)
	./$(TARGET)
clean:
	rm -f $(TARGET)

四、稍完整的实用示例(覆盖核心用法)

整合变量、伪目标、多依赖、运行/清理,适合大部分小型项目:

# 声明伪目标:all(默认)、clean(清理)、run(运行)
.PHONY: all clean run
# 定义变量:编译器、参数、目标文件、所有源文件
CC = gcc
CFLAGS = -Wall -g  # -g 生成调试信息,方便gdb调试
TARGET = myapp
# 所有源文件(多个用空格分隔)
SRC = main.c func.c tool.c
# 默认目标:构建可执行文件
all: $(TARGET)
# 构建规则:多源文件编译
$(TARGET): $(SRC)
	@echo "开始编译..."  # @echo 执行时不显示命令本身,只显示输出
	$(CC) $(SRC) -o $(TARGET) $(CFLAGS)
	@echo "编译完成!生成文件:$(TARGET)"
# 运行程序:先编译再运行
run: $(TARGET)
	@echo "运行程序:"
	./$(TARGET)
# 清理生成的文件
clean:
	@echo "清理文件..."
	rm -f $(TARGET)
	@echo "清理完成"

执行命令

make        # 编译(默认执行all)
make run    # 编译+运行
make clean  # 清理

五、关键使用要点

  1. 命令行前必须用 Tab 缩进,不能用空格(编辑器需关闭「Tab自动转空格」);
  2. 注释用 # 开头,单行注释;
  3. 执行命令时,加 @ 可隐藏命令本身(如 @echo 只显示输出,不显示echo 开始编译...);
  4. Makefile 会自动检查依赖文件的修改时间:如果依赖文件(如.c)比目标文件(如可执行文件)新,才会重新编译,否则跳过(节省构建时间)。

六、核心总结

  1. Makefile 核心是规则(目标:依赖 + Tab命令),用于定义自动化构建流程;
  2. 必学特性:Tab 缩进、伪目标(.PHONY)、变量($(变量))、默认目标(第一个);
  3. 常用命令:make(执行默认目标)、make 目标名(执行指定目标,如make clean/run);
  4. 核心价值:替代手动重复指令,自动检查文件修改、按需构建,适合所有需要重复执行固定流程的项目。

到此这篇关于python环境搭建Makefile简单使用步骤的文章就介绍到这了,更多相关python makefile使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • pyecharts结合flask框架的使用

    pyecharts结合flask框架的使用

    这篇文章主要介绍了pyecharts结合flask框架,主要是介绍如何在Flask框架中使用pyecharts,本文通过示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • 浅析python中while循环和for循环

    浅析python中while循环和for循环

    在本篇文章里小编给各位整理的是关于python中while和for循环知识点详解,有兴趣的朋友们可以学习下。
    2019-11-11
  • 使用Python请求http/https时如何设置失败重试次数

    使用Python请求http/https时如何设置失败重试次数

    这篇文章主要介绍了使用Python请求http/https时如何设置失败重试次数问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Python 命令行参数sys.argv

    Python 命令行参数sys.argv

    命令行参数是通过sys.argv[]来获取的,sys.argv[0]是代码文件本身的路径,因此参数是从1开始的。比如设置参数为: spe
    2008-09-09
  • python 文件查找及内容匹配方法

    python 文件查找及内容匹配方法

    今天小编就为大家分享一篇python 文件查找及内容匹配方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Python使用Tkinter打造一个完整的桌面应用

    Python使用Tkinter打造一个完整的桌面应用

    在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可使用,这种“开箱即用”的特性让它成为新手入门GUI开发的首选,本文将通过构建一个完整的记事本应用,带你领略Tkinter的实用魅力
    2025-06-06
  • Python爬虫抓取代理IP并检验可用性的实例

    Python爬虫抓取代理IP并检验可用性的实例

    今天小编就为大家分享一篇Python爬虫抓取代理IP并检验可用性的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • python3 webp转gif格式的实现示例

    python3 webp转gif格式的实现示例

    这篇文章主要介绍了python3 webp转gif格式的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • python网络应用开发知识点浅析

    python网络应用开发知识点浅析

    在本篇内容中小编给学习python的朋友们整理了关于网络应用开发的相关知识点以及实例内容,需要的朋友们参考下。
    2019-05-05
  • 不到20行代码用Python做一个智能聊天机器人

    不到20行代码用Python做一个智能聊天机器人

    小编先向大家介绍一下本次运用到的python库,本次项目主要运用到的库有wxpy和chatterbot。对Python做一个智能聊天机器人的相关知识感兴趣的朋友跟随小编一起看看吧
    2019-04-04

最新评论