(Translated by https://www.hiragana.jp/)
make - 维基百科,自由的百科全书 とべ转到内容ないよう

make

本页使用了标题或全文手工转换
维基百科ひゃっか自由じゆうてき百科ひゃっかぜん
重定しげさだこうMakefile

Make
编程范型きょしゅう, 宣告せんこくしきへんほど
設計せっけいしゃ斯圖とく·しかとく
发行时间1976ねん4がつ,​48ねんまえ​(1976-04
じつさくげんC げん
操作そうさけいるい Unix 系統けいとう
檔案格式かくしきMakefile

Makeいち个在软件开发ちゅうしょ使用しようてき构建工具こうぐよう自動じどうけん軟體。 它通过一个名为 Makefile てきぶん本文ほんぶんけんらい描述げんだい码文けん间的赖关けい构建规则。 Make かいすえ这些规则赖关けい判断はんだん哪些ぶんけん需要じゅようおもしん编译,并执ぎょうしょう应的编译命令めいれい,以确さい生成せいせい行文こうぶんけんある其他标文けん(这些标被しょう为“target”)。 だい多数たすうじょう况下,它被ようらい编译みなもとだい生成せいせい结果だいしかきさき结果だい码连せっおこり来生きすぎしげる行文こうぶんけんあるもの库文けん

許多きょた現代げんだい軟體てき開發かいはつ環境かんきょうちゅう(如Microsoft Visual Studio),集成しゅうせい开发环境やめだいmake,ただしざいUnix環境かんきょうちゅう,仍然ゆう許多きょた工程こうてい採用さいようmakeらいきょうじょ軟體開發かいはつ

起源きげん

[编辑]

目前もくぜん虽有众多赖关けい检查工具こうぐただしmake应用さい广泛てきいち个。这要归功于它包含ほうがんざいUnixけい统中。[1]斯圖とく·しかとくStuart Feldmanざい1977ねんざい贝尔实验しつBell Labsさと制作せいさくりょう这个软件。[2][3][1]2003ねん,斯圖とく·しかとく曼因发明りょう这样一个重要的工具而接受了美国びくに计算つくえ协会(ACM)颁发てき软件けい统奖。[4]

ざいmake诞生まえ,编译工作こうさく主要しゅよう赖于操作そうさけい统里めんてき类似于“make”、“install”こうのうてきshell脚本きゃくほん。它可以批りょう执行生成せいせい标的命令めいれい,并且完成かんせい赖关けいてき检查。这是こう现代编译环境发展てき重要じゅうよういち

不同ふどう版本はんぽん

[编辑]

makeほどじょやめ使用しようしゃつぎじゅう/あらためうつし,其中包括ほうかついくようしょうどうてきぶんけん格式かくしき和算わさんほう原理げんりじゅう新編しんぺんうつしなみ且依あきら不同ふどう需要じゅよう添加てんかりょういち些不常見つねみてき改良かいりょう

GNU make

[编辑]

GNU make仿照makeてき標準ひょうじゅんこうのう透過とうかclean-room工程こうていじゅう新改しんがいうつしなみ加入かにゅう作者さくしゃさとしとく值得加入かにゅうてきしんこうのう常和ときわGNUへんやく系統けいとういちおこり使用しようだい多數たすうGNU Linuxあんそうてきいち部分ぶぶん

BSD make

[编辑]

BSD makeしたがえAdam de Boorてき製作せいさくてき版本はんぽんじょう發展はってんなり。它編やく目標もくひょうてき時候じこうゆう並行へいこう計算けいさんてき能力のうりょく。它在FreeBSDNetBSDOpenBSDちゅう不同ふどう程度ていどてきおさむあらためそんかつりょうらい

Microsoft nmake

[编辑]

こう應用おうようほろてきWindowsほろてきnmake Visual Studio ずいてき命令めいれいぎょう工具こうぐ不要ふようあずからいAT&Tかいなんじ實驗じっけんしつてきUnix系統けいとうnmake混淆こんこう

优点缺点けってん

[编辑]

就像其他makeゆう悠久ゆうきゅう历史てき软件いち样,makeゆう很多てき拥护しゃはん对者。它的很多问题いん现代大型おおがたてき软件项目的もくてき现而暴露ばくろ出来できただし很多じんそう论说它在つね见的じょう况下以很このみてき工作こうさく,而且使用しよう非常ひじょうてき简单,こうのう强大きょうだいおもて达清すわえ。无论如何いか,make仍然もちいらい编译很多かんせいてき操作そうさけい,而且现在がえ代品だいひん们在基本きほんてき操作そうさじょうあずか它没ゆうふとし大差たいさ别。

ずい现代てき集成しゅうせい开发环境(IDE)てき诞生,とく是非ぜひUnixてき平台ひらだいじょう,很多ほどじょ员不さい管理かんりもたれ关系检查,甚至不用ふようかん哪些ぶんけん这个项目的もくてきいち部分ぶぶん,而是这些にん务交给了们的开发环境做。类似てき,很多现代てき编程语言ゆう自己じことく别的だかこうてき赖关けいてき设置方法ほうほう

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のう运行てき命令めいれい


しめせれい

[编辑]

举例らい说明makefileてき结构make如何いか运作。

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

とうeditor这个targetぶんけん存在そんざいあるものmain.o、text.o这两个依赖文けんおさむあらため都会とかい导致make调用其下てき命令めいれい“gcc -o editor main.o text.o”;せっらいゆかり引用いんよういたmain.otext.o,makeかい检查main.oてき赖main.c、def.hゆう更新こうしん,如果ゆう,则执ぎょう其下てき命令めいれい“gcc -c main.c”;どう样的道理どうり,也适よう于text.o。 于是,ゆう几种不同ふどうてき输出:

  • だいいち运行:
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.ctext.cひとしゆうおさむあらため
gcc -c main.c
gcc -c text.c
gcc -o editor main.o text.o

とうわが们输いれ

make install

makeかい检查installてき赖editor最新さいしん,如果,则执ぎょう其下てき命令めいれい“mv editor /usr/local”。よし于这个过ほど并没ゆう产生めい为“install”てきぶんけん所以ゆえん,installいち个假标。


きょしゅう

[编辑]

きょしゅうゆびてきよう一个字符串代替另一个字符串的功能。ざいmakefileちゅう使用しよう“=”ごうらいてい义巨しゅう使用しよう“$(きょ集名しゅうめい)”らい使用しようきょしゅう;还可以用“+=”追加ついかきょしゅうてき内容ないよう。习惯じょうきょ集名しゅうめい使用しようだいうつしうけたまわせっ上面うわつらてきれい

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. ^ 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. 
  2. ^ V7/usr/src/cmd/make/ident.c. tuhs.org. 1 September 2013 [18 March 2018]. (原始げんし内容ないようそん档于2013-09-01). 
  3. ^ 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). 
  4. ^ Matthew Doar. Practical Development Environments. O'Reilly Media. 2005: 94. ISBN 978-0-596-00796-6. 

外部がいぶ链接

[编辑]