今天抽了一天空仔细学习了makefile的书写格式,前面都很顺利,但是到静态模式这里就有问题了。
按照网上介绍的无论如何怎么写也不对,我先贴下网上的写法:
# BEGIN
object = main.o function.o
hello_unix: $(object) link
$(object): %.o: %.cpp
gcc -c $< -o $@
.PHONY: link
link:
gcc -lstdc++ -o hello_unix $(object)
#END
在FreeBSD 8.0 amd64下总也过不去,后来我灵机一动,将其中的%都改为*后,终于一切正常,大概网上的版本都是针对GNU make的?还是我用的版本比网上的教程版本高很多?折腾了半天总算过了,赶紧make一个。
另外, 用来描述目标模式和依赖模式时的空格也不能少:$(object):[空格]*.o[不能空格]:[空格]*.cpp 这里的[空格]代表要给一个空格,[不能空格]表示坚决不要插入空格。至于其他的什么command必须以tab开头和这个比就是弱爆了咱们就不提它了……
之前零零星星也读过写过makefile但是总没有正式的研究过。今天研究了一天,感觉语法格式蛮严谨的,另外类似静态模式这样的描述能力确实相当的方便,基本上一个模式就搞定了一个大类文件的编译规则,简洁又优美,符合unix哲学,赞一个!
posted on 2012-01-19 17:19
无毁湖光 阅读(466)
评论(0) 编辑 收藏 引用