Makefile 的规则

   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.c文件,规则是 $(CC) $(CPPFLAGS) $(CFLAGS) -c -o xxx.o xxx.c
 ( $(CC) $(CPPFLAGS) $(CFLAGS) 都是makefile的全局变量,可以修改 变量文章讲述) 
2.编译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

 

    看起来还是很简单的。规则就这么多。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值