1596年到1598年,一个有名的人叫巴伦支,他是荷兰的一个船长,他试图找到从北面到达亚洲的路线。他经过了三文雅,现在一个俄罗斯的岛屿,但是他们被冰封的海面困住了。 三文雅地处北极圈之内,巴伦支船长和17名荷兰水手在这里度过了8个月的漫长冬季。他们拆掉了船上的甲板做燃料,以便在零下40度的严寒中保持体温;他们靠打猎来取得勉强维持生存的衣服和食物。在这样恶劣的险境中,8个人死去了。但荷兰商人却做了一件令人难以想象的事情,他们私毫未动别人委托给他们的货物,而这些货物中就有可以挽救他们生命的衣物和药品。 冬去春来,幸存的商人终于把货物几乎完好无损地带回荷兰,送到委托人手中。他们用生命作代价,守望信念,创造了传之后世的经商法则。在当时,这样的做法也给荷兰商人带来显而易见的好处,那就是赢得了海运贸易的世界市场场。 ---央视纪录片《大国崛起》
makefile的规则分为两大类:
显式规则:Explicit rules
隐式规则: Implicit Rules (概述中的 最简单的makefile例子)
显示规则很简单,就是需要我们手动去写规则,即
Target:Dependences
[TAB]Rule1
[TAB]Rule2
...
隐式规则,比较多。GNU make的文档中,列举了16种潜规则。我就只列出C /C++ 相关的:
1.编译C程序xxx.o 文件自动依赖于xxx.cc,或者xxx.cpp, 或者xxx.c.
规则是:$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o xxx.o xxx.cc/cpp/c
3.汇编或者需要预处理的汇编
xxx.o文件自动依赖xxx.s,规则是 $(AS) $(ASFLAGS) -o xxx.o xxx.s
xxx.s文件自动依赖xxx.S, 规则是 $(CPP) $(CPPFLAGS) -o xxx.s xxx.S
4. 链接单一的对象文件 (概述中的 最简单的makefile例子)
xxx文件自动依赖 xxx.o 规则是 $(CC) $(CFLAGS) $(LOADLIBES) $(LDLIBS) -o xxx xxx.o
概述中的例子,main自动依赖main.o, main.o又自动依赖于 main. c
看起来还是很简单的。规则就这么多。