makefile編寫---單個子目錄編譯模板

來源:互聯網
上載者:User

標籤: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]:目標檔案

$^:所有的依賴檔案

$<:第一個依賴檔案

帶自動化變數的:

  1. #這是簡化後的Makefile   
  2. main: main.o app1.o app2.o app3.o  
  3. gcc -o [email protected] $^  
  4. main.o: main.c app1.h app2.h  
  5. gcc -c $<  
  6. app1.o: app1.c app1.h  
  7. gcc -c $<  
  8. app2.o: app2.c app2.h  
  9. gcc -c $<  
  10. app3.o:app3.c app3.h
  11. gcc -c $<

makefile 預設規則

..c.o:

gcc -c $<

 

這個規則表示所有的.o檔案都是依賴於相應的.c檔案的,例如app1.o 依賴於app1.c。

帶預設規則的:

  1. #這是再一次簡化後的Makefile   
  2. main: main.o app1.o appl2.o app3.o  
  3. gcc -o [email protected] $^  
  4. ..c.o:  
  5. 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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.