Makefile基本结构

基本格式

target ... : prerequisites ...
	command
	...
	...

这是一个文件的依赖关系,也就是说,target 这一个或多个的目标文件依赖于 prerequisites 中的文件,其生成规则定义在 command 中。值得注意的是,在 Makefile 中的命令,必须要以[Tab]键开始。

变量定义与预定义变量

对于在Makefile中重复出现的文件,可以将其自定义成我们所命名的变量。在Makefile中变量一般都是字符串,有点像C语言中的宏,当Makefile被执行时,其中的变量都会被扩展到相应的引用位置上。

在Makefile中有许多变量预先就定义好了,可供我们直接调用。常用的预定义变量:
$* 不包含扩展名的目标文件名称。
$+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。
$< 第一个依赖文件的名称。
$? 所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。
$@ 目标的完整名称。
$^ 所有的依赖文件,以空格分开,不包含重复的依赖文件。
$% 如果目标是归档成员,则该变量表示目标的归档成员名称。

使用通配符

在Makefile的编写中我们也可以用到我们平时使用到的通配符。如:星号代表任意个任意字符,*.o代表文件夹中所有.o文件。

显示规则与注释

make 会把其要执行的命令行在命令执行前输出到屏幕上。当我们用“@”字符在命令行前,那么,这个命令将不被 make 显示出来。

如果 make 执行时,带入 make 参数“-n”或“–just-print”,那么其只是显示命令,但不会执行命令,这个功能可以用来调试我们的Makefile,观察我们编写的Makefile的执行顺序。而 make 参数“-s”或“–slient”则是全面禁止命令的显示。

Makefile中只有行注释,和UNIX的Shell脚本一样,其注释是用“#”字符,类似于C/C++中的“//”一样。

隐晦规则

在我们使用 Makefile 时,有一些我们会经常使用,而且使用频率非常高的东西,make其实是预先规定好的,其具有自动推导的功能,它可以自动推导文件以及文件依赖关系后面的命令,如.o文件由.c文件编译而来,它们之间的依赖关系是预先就设定好的,于是我们就没必要去在每一个.o文件后都写上类似的命令

Makefile可以嵌套执行,在大型的工程项目中,我们将不同的模块放在不同的文件夹,然后为每个文件夹编写相应的Makefile,有利于我们Makefile的维护。

初三女生创全美第五大社交媒体

myyearbook

自古英雄出少年。

6年前,一个叫Catherine Cook的美国初三女生创立了自己的社交网站myYearbook。在这个网站迅速壮大成为全美第五大社交媒体过后,今年7月,Catherine Cook把它卖了1亿美元。

现年21岁的Catherine被称为“女版马克·扎克伯格”,拉美社交巨头Quepasa以8200万美元的股票和1800万美元现金的形式进行收购,并表示作为一个有着产品导向团队的社交媒体,myYearbook新意层出的社交游戏总能让年轻用户们感到好玩又不腻,这对于运营着一个社交游戏工作室的Quepasa来说将是个福音。

myYearbook最初是个家庭作坊。2005年,15岁的Catherine Cook刚刚与弟弟David Cook一同转学到一所新学校,随后她便对怎么认识新朋友感到了茫然。直到姐弟俩在家里随手翻着学校发的年鉴(yearbook),讨论着他们有多讨厌自己被放在上面的难看寸照时,两人突发奇想:为什么我们不可以弄个能够在线上认识新同学、自由换头像的年鉴呢?

他们的主意获得了25万美元的投资,投资人是自己的哥哥Geoff Cook,后者是升学申请咨询网站EssayEdge和求职咨询网站ResumeEdge的创始人。Catherine和David找到一个在孟买的程序开发小组编写网页,有丰富经验的Geoff担任CEO,就这样,myYearbook诞生了。

为什么myYearbook值那么多钱?如果你玩过这个网站,你会发现myYearbook的一些服务基本和Facebook以及Google+后来的点子是一致的,而且比他们更早捕获这些创意。对社交功能的敏锐预测,成为myYearbook的一个重要价值。

早在2008年,myYearbook就和休闲游戏开发者Arkadium合作推出基于Flash的社交游戏,并首次应用了虚拟货币Lunch Money。后来Facebook推出的Credits与这个概念如出一辙,但Lunch Money除了可以让myYearbook用户购买虚拟商品送来送去,还可以以等价货币的形式捐赠给站内的慈善机构。

不仅如此,SoLoMo的概念在Catherine的创业最初就被采用,甚至成为她整个点子的基石。每个用户注册时都会被要求填写邮编,根据邮编,系统会告诉你有什么邻居也在用这个网站。如果你玩线上游戏,还可以根据邮编挑选和你在同一个社区,或者同一个学校的玩伴,即便你们原来互不相识。

所以,myYearbook的另一大价值来自于它和Facebook的正好互补。Catherine希望用户能发现更多的新朋友,而Facebook则希望你和原来的朋友更熟。不过,问题是如何让好友寥寥的人和一个有着150个好友的人成为朋友?Catherine说,最好的办法就是把所有用户以居住区域进行划分。

myYearbook曾经统计过一个图表:假设你有100个Facebook好友,这天你很想玩在线游戏,但与你同时在线的好友只有10个,这10人当中只有5个想玩游戏,到了最后也许只剩2人是能够陪你玩的。myYearbook则把这个好友限定的围栏撤走。而这些和你玩游戏的用户和你住在一个社区或读同一个学校,你们有可能成为真实生活中的好朋友─这就回到了Catherine15岁创立myYearbook时的简单想法:她想要一个可以在线上认识自己同学的网站。

而myYearbook早已不是三兄妹的小作坊。他们从创业公司、互联网技术公司以及MySpace一类的社交媒体里招兵买马组成强大团队。2010年,myYearbook在iPhone和Android上分别推出了应用程序,很快便达到每月12亿个页面的浏览量。网站目前也有470万北美独立访问用户和540万国际访问用户,年收入2000万美元。

不过Catherine和马克·扎克伯格不同的是,她并不打算放弃自己的大学学位,myYearbook一度成为继Facebook和MySpace之后第三大社交网站,但在3年时间内落到了第五位。而如今SoLoMo的概念炙手可热,她的团队又足够成熟─为什么不在这个时间卖个好价钱呢?