[心得] makefile的写法

楼主: craig08 (小佑)   2012-03-06 00:48:31
因为在写makefile的时候遇到一些小问题
所以就上网查了一下
其实网络上资料是颇多的
既然已经查了就在这里跟大家分享一下
=======================================================================
http://tetralet.luna.com.tw/index.php?op=ViewArticle&articleId=185
http://www.cyut.edu.tw/~dywang/linuxProgram/node32.html
简而言之
在terminal下打 make [target] 的时候
系统会自动去搜寻当前资料夹下的makefile或是Makefile档案
然后寻找makefile中(target): 接着执行<tab>后面的那串指令
如果纯粹只打make而不加任何target的话
默认会执行makefile的"第一个"target
makefile 的语法(syntax)
标的(target): [相依性1 相依性2...]
<tab> g++ [指令] source档1 [source档2...] -o 欲建立的执行档
标的 (target) 与相依性之间需以‘:’隔开。
<tab> 需要在命令行的第一个字符;
makefile 语法中之 <tab> 与空白:
所有的法则必须在同一行,而且行首必须为 <tab>;不能为空白。
在 makefile 中,行尾如果有一个空白,会造成 make 命令执行错误。
makefile 的注解(comment):
如同 C 原始码档案一般,在 makefile 中,以 # 为行首的文字都是注解。
makefile 中的注解只是协助作者和其它人,了解 makefile 的内容。
makefile 的语法规则:
makefile 是由很多相依性项目(dependencies)和法则(rules)所组成。
相依性项目,描述目标项目(target,要产生的档案)和产生该档案之相关的原始码
档案。
法则是说明如何根据相依性档案,来建立目标项目。
make 命令利用 makefile,先决定依序建立哪些目标,再决定依序唤起哪些法则。
g++常用指令
-c 用来产生可以link的.o档
-O2 某种optimize方法
-g 加入debug讯息 可用gdb看
-D define某宏变量 让code中的 #ifdef XXXX <code> #endif段程式码成立 进入编译
-L 加入library路径
-l 加入archive后的library(.a档) 要去掉档名开头的lib三个字符与最后的.a两个字符
上面的文字中有一些是我自己加上的心得
如果有任何错误欢迎指正~
作者: anfranion (南‧生命的意義是經歷)   2012-03-06 11:47:00
-D说成是define 某个宏变量会比较好:P这样让code中的 #ifdef XXXXX 就会成立~
楼主: craig08 (小佑)   2012-03-06 14:34:00
感谢~
作者: Usoul   2012-03-06 18:35:00
推~ 第一次接触或不熟悉 makefile 的人可以参考这篇文章

Links booklink

Contact Us: admin [ a t ] ucptt.com