MakeFile Implicit Rules,A Gift for Me(强大的..
时间:2010-07-18 来源:sinodragon21
这几天在解决源代码编译时忽然遇到个问题,今天终于在网络上学习MAKEFILE资料后得到解决,在此 与大家分享。
使用GCC开发的朋友是不是会常写MakeFile呀,一般来说COPY一个已经有的MakeFile,改一改加入自己的CFLAGS和OBJECTS就好了,其中有几行处理OBJECT编译的suffix rule:
.c.o:它会根据.o目标的依赖自动找到对应的.c进行编译,所以的 objects使用相同的CFLAGS,平常这没有什么问题,可是如果其中有部分objects需要使用与众不同的CFLAGS定义怎么办呢?
$(CC) -c $(CFLAGS) -o $*.o $<
.S.o:
$(CC) -c $(CFLAGS) -o $*.o $<
比如我的程序三个.c文件main.c,meth_a.c,meth_b.c,他们使用到一个DEBUG的宏来在MAKEFILE中定义用来打开 debug信息,可是我现在只希望打开meth_b.c中的debug信息怎么办呢,MakeFile的隐式规则可以帮助你办到!
CFLAGS += -Wall
CFLAGS += -O2
CFLAGS += -ansi
CFLAGS += -I/usr/include
meth_b.o : CFLAGS += -DDEBUG
只要加入meth_b.o : CFLAGS += -DDEBUG就好了,它表示在编译目标时CFLAGS自动加上-DDEBUG的宏定义,厉害,强大的MakeFile!!!
以下是参考 文章转载:
http://www.study-area.org/cyril/opentools/opentools/x1176.html
內隱規則(Implicit Rules)
簡介
通常我們編譯程式時有很多算是每個人都有的共同習慣,例如我就是把 foo.c 編成foo.o。像這樣的編譯習慣,gnu make有一些內定規則來編譯, 也就是有的target你不寫,make也可以根據內定規則把他編譯出來。不用 對每個不同的.o寫不同的規則, 如果有個程式由foo.c foo1.c foo2.c......寫這些就寫得會發瘋了,例如
foo.o:foo.c |
C程式 |
自己的內隱 規則
因為可能有的時候你希望做些dependency檢查,或者加上一些gcc 用的旗標,不是很單純的編譯而已你可以給make自訂的內隱規則
自訂規則
樣式規則(pattern rule)你可以用pattern rule來做一些自定的內隱規則。像這樣
%.o : %.c prog.h |
%.pdf : %.sgml |
pattern rule也可以有特定變數設值,特定樣式(pattern)的變數,例如
%.o : CFLAGS = -O |
還有更古老的一種叫suffix rule的方法來做,這種方法就有限制性 了,因為只能用在副檔名的規則。例如
.c.o: |
自動變數與內隱規則
因為這樣動態的編譯手法,它需要像在CVS裡面的%v %V %s這種東西來代替一些 動態改變的字串(幫你複習一下CVS)。所以有所謂的自動變數
$@ 同一個規則的目標名 |
內隱規則內也預設了一些變數,例如
AR = ar |

<img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />
飞行射击 下载
<img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />
飞行射击 下载
<img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />
飞行射击 下载- 4 <img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />下载73.78MB · 92℃
1970-01-01
- 5 <img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />下载43.7 MB · 90℃
1970-01-01
- 6 <img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />下载110.69MB · 98℃
1970-01-01