前面一節課講解了Makefile的基礎知識包括原理、預定義以及命令格式,這樣是可以完成一個自動編譯的文件,這些知識可以幫你完成。想想mak真是強大啊,可能有些同志發現了如果項目文件太多每個目標文件都要寫指令有沒有其它的簡化來加快開發速度,提高項目的可維護性,答案當然是有的,這就是接下來的要講解的I?n?f?e?r?e?n?c?e? ?R?u?l?e?s?(?推?導?規?則?),有了這個推導規則是的make更強大。
2原理:I?n?f?e?r?e?n?c?e? ?R?u?l?e?s?(?推?導?規?則?)是一個模板,它用于決定如何從一個具有某種擴展名的文件構造出一個具有另一種擴展名的文件。描述:如果看到一個目標文件calc.o,它就會自動地把后綴.c文件calc.c加入到依賴對象中,此時calc.c就是calc.o的依賴文件,并且也會推導出其shell命令:cc -c calc.c.
3實踐:說了下可能不是很明白,下面來實踐一下按照之前上節課的makefile文件推導可以是如下:
EXE=calcOBJECTS=calcmain.o calc.o $(EXE):$(OBJECTS) #生成可執行文件。 cc -o $(EXE) $(OBJECTS) #自動推導出其shell命令calcmain.o:calc.h cc -c calcmain.c #自動推導出其shell命令
上面的例子cc指令可以不用寫,因為是可以make自動推導出命令的,這也是make的隱晦規則。估計這個時候就更明白了,那么上一節課的整個Makefile文件如果是按照推導來編寫又是怎樣的呢,看下面:
EXE=calcOBJECTS=calcmain.o calc.o $(EXE):$(OBJECTS) cc -o $(EXE) $(OBJECTS)clean: rm -f $(EXE) $(OBJECTS)
由于calcmain.o自動推導出calcmain.c這個可以省略,那么cc命令也自動推導出。
今天在博客園突然檢索了下自動推導結果發現一篇文章寫的非常這里引用一下:http://www.CUOXin.com/wdpp/archive/2010/07/06/2386931.html,思路不清晰的可以前往觀看。
新聞熱點
疑難解答