跳转到内容
命令速查toolchain

make:按依赖关系执行构建

使用 GNU make 根据 Makefile 中的目标、先决条件和配方增量构建项目。

状态
已审阅
难度
进阶
风险
会改变系统
平台
linux · debian · ubuntu

make 读取 Makefile 中的依赖关系和配方,根据文件时间戳判断哪些目标需要更新,再执行相应命令。它不仅能编译程序,也能描述其他可重复的文件生成任务。

Terminal window
make [选项] [变量=值] [目标 ...]
参数 作用
目标 构建指定目标;省略时使用默认目标。
-f 文件 读取指定 Makefile。
-C 目录 进入指定目录后运行。
-n 显示计划执行的配方,通常不执行它们。
-j 数量 并行执行指定数量的任务。
变量=值 从命令行覆盖 Makefile 变量。

先查看计划,再构建指定目标:

Terminal window
make -n all
make all

为支持 CC 变量的 Makefile 指定编译器:

Terminal window
make CC=gcc

make 成功时退出状态为 0;遇到错误通常返回 2

  • Makefile 配方可以执行任意 Shell 命令;运行来源不明的项目等同于运行来源不明的脚本。
  • make -n 是检查辅助工具,不是安全沙箱;递归构建等特殊配方仍可能执行。
  • make clean 没有统一实现,删除范围完全由项目定义,执行前应先阅读对应规则。
  • 并行构建会暴露未正确声明的依赖;失败时可先去掉 -j 复现。

本页描述 GNU make。BSD make 与 GNU make 的语法和扩展并不完全兼容;项目若明确要求 GNU make,不应假定任意 make 实现都可替代。