make
编程范型 | |
---|---|
斯圖 | |
发行时间 | 1976 |
C | |
檔案 | Makefile |
Make
起源
[编辑]不同 版本
[编辑]make
GNU make
[编辑]GNU make仿照make
BSD make
[编辑]BSD make
Microsoft nmake
[编辑]优点和 缺点
[编辑]就像其他
Makefile
[编辑]规则
[编辑]makefile
#用 “#”号 表明 注 释。 target(要 生成 的 文 件 ): dependencies(被 依 赖的文 件 ) #命令 前面 用 的 是 “tab”而非空 格 。误用空 格 是 初学 者 容易 犯 的 错误! Tab ↹命令 1 Tab ↹命令 2 Tab ↹命令 3 . . . Tab ↹命令 n #可 以使用 “\”表示 续行。注意 ,“\”之 后 不能 有 空 格 !
- target, dependencies
和 命令 构成了 一 个makefile里 的 一 个“规则”,规则指示 make何 时以及如何 重 新 生成 target或 执行target下 的 命令 - target
通常 是 我 们要生成 的 文 件 的 名字 ,摆放的 顺序不 重要 ,但 第 一 个target是 默 认的target。当 make不 带参数 时,自 动执行 第 一 个target。target也可以是要求 make完成 的 动作,执行这种target后 并不能 得 到 和 target同名 的 文 件 ,因 此,也称为伪target(phony target)。 - dependencies
是 生成 target所 需的文 件名 列 表 。依 赖可以为空 ,常用 的 “clean”target就常常 没 有 依 赖,只 有 命令 。若 依 赖不为空,则make会 先 检查依赖的“规则”。依 赖规定 了 何 时重新 执行target下命 令 。若 任 何 依 赖比target更新 (由 于执行 了 依 赖的“规则”的 命令 或 用 户修改 了 依 赖),make则会重 新 执行target下 的 命令 。 命令 可 以是任 何 一 个shell能 运行的 命令 。
示 例
[编辑]举例
editor: main.o text.o
gcc -o editor main.o text.o
main.o: main.c def.h
gcc -c main.c
text.o: text.c com.h
gcc -c text.c
install:editor
mv editor /usr/local
make或 者 make editor
第 一 次 运行:
gcc -c main.c gcc -c text.c gcc -o editor main.o text.o
- main.c
或 /和 def.h有 修 改 :
gcc -c main.c gcc -o editor main.o text.o
- text.c
或 /和 com.h有 修 改 :
gcc -c text.c gcc -o editor main.o text.o
- main.c
和 text.c均 有 修 改 :
gcc -c main.c gcc -c text.c gcc -o editor main.o text.o
make install
make
巨 集
[编辑]“
OBJECTS = main.o text.o
INSTALL_PATH = /usr/local
editor: $(OBJECTS)
gcc -o editor $(OBJECTS)
main.o: main.c
gcc -c main.c
text.o: text.c
gcc -c text.c
install:editor
mv editor $(INSTALL_PATH)
参 见
[编辑]参考 资料
[编辑]- ^ 1.0 1.1 Thompson, T. J. Designer's Workbench: Providing a Production Environment. Bell System Technical Journal. November 1980, 59 (9): 1811–1825. doi:10.1002/j.1538-7305.1980.tb03063.x.
In the general maintenance of DWB, we have used the Source Code Control System and make utility provided by the PWB/UNIX* interactive operating system.
- ^ V7/usr/src/cmd/make/ident.c. tuhs.org. 1 September 2013 [18 March 2018]. (
原始 内容 存 档于2013-09-01). - ^ Feldman, S. I. Make --- A Program for Maintaining Computer Programs. Software: Practice and Experience. April 1979, 9 (4): 255–265 [11 May 2016]. doi:10.1002/spe.4380090402. (
原始 内容 存 档于2020-09-14). - ^ Matthew Doar. Practical Development Environments. O'Reilly Media. 2005: 94. ISBN 978-0-596-00796-6.