標籤:style blog http 使用 檔案 art
經過這次地庫項目之後,雖然時間不久,跟團隊在一起,雖然隊員不一定在技術上有過人之處,但是來自大公司的員工,在工具使用和代碼規範方面還是有點可鑒之處,在搭建主控模組是,就得面臨makefile編寫,因為所有的功能模組都得自己實現,所以使得我不得不熟練下makefile,至少在以後的項目中,能用上自己寫的模板!
在預設的方式下,也就是我們只輸入make命令。那麼,
1、make會在目前的目錄下找名字叫“Makefile”或“makefile”的檔案。
2、如果找到,它會找檔案中的第一個目標檔案(target),在上面的例子中,他會找到“edit”這個檔案,並把這個檔案作為最終的目標檔案。
3、如果edit檔案不存在,或是edit所依賴的後面的 .o 檔案的檔案修改時間要比edit這個檔案新,那麼,他就會執行後面所定義的命令來產生edit這個檔案。
4、如果edit所依賴的.o檔案也不存在,那麼make會在當前檔案中找目標為.o檔案的依賴性,如果找到則再根據那一個規則產生.o檔案。(這有點像一個堆棧的過程)
5、當然,你的C檔案和H檔案是存在的啦,於是make會產生 .o 檔案,然後再用 .o 檔案生命make的終極任務,也就是執行檔案edit了。
http://blog.csdn.net/haoel/article/details/2887
依然有簡單到複雜。
(一)首先是兩三個的簡答c檔案.
沒喲自動化變數的makefile:
my_app : main.o, app1.o, app2.o, app3.o, app4.o
gcc –o my_app main.o app1.o, app2.o, app3.o, app4.o
main.o : main.c app1.h app2.h app3.h
gcc –c main.c
app1.o : app1.c app1.h
gcc –c app1.c
app2.o : app2.c app2.h
gcc –c app2.c
app3.o : app3.c app3.h
gcc –c app3.c
clean :
rm main.o app1.o, app2.o, app3.o, app4.o
Makefile 有三個非常有用的變數:[email protected],$^,$<。其意義為:
[email protected]:目標檔案
$^:所有的依賴檔案
$<:第一個依賴檔案
帶自動化變數的:
- #這是簡化後的Makefile
- main: main.o app1.o app2.o app3.o
- gcc -o [email protected] $^
- main.o: main.c app1.h app2.h
- gcc -c $<
- app1.o: app1.c app1.h
- gcc -c $<
- app2.o: app2.c app2.h
- gcc -c $<
- app3.o:app3.c app3.h
- gcc -c $<
makefile 預設規則
..c.o:
gcc -c $<
這個規則表示所有的.o檔案都是依賴於相應的.c檔案的,例如app1.o 依賴於app1.c。
帶預設規則的:
- #這是再一次簡化後的Makefile
- main: main.o app1.o appl2.o app3.o
- gcc -o [email protected] $^
- ..c.o:
- gcc -c $<
http://blog.csdn.net/livelylittlefish/article/details/3854220
(二)標準模板多個c檔案的makefile
1、wildcard : 擴充萬用字元
2、notdir : 去除路徑
3、patsubst :替換萬用字元
http://wenku.baidu.com/link?url=6HuOUSmDQNJlSqBAiuFpZF4FvmjfCL4mriPKsaVZJZwPWqrb7wXjTKSBhLpaHZnHYOAJz5ZE0lA8HZUZKgrjNhdYSj3WHvFszwlLwEiwgzC