【Linux】Makefile文件
Makefile文件
1. Makefile定義
一個工程中的源文件不計其數,其按類型、功能、模塊分別放在若干個目錄中,makefile定義了一系列的規則來指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進行更復雜的功能操作,因為 makefile就像一個Shell腳本一樣,其中也可以執行操作系統的命令。
2. Makefile 介紹
make命令執行時,需要一個 Makefile 文件,以告訴make命令需要怎么樣的去編譯和鏈接程序。
首先,我們用一個示例來說明Makefile的書寫規則。以便給大家一個感興認識。這個示例來源于GNU的make使用手冊,在這個示例中,我們的工程有8個C文件,和3個頭文件,我們要寫一個Makefile來告訴make命令如何編譯和鏈接這幾個文件。我們的規則是:
只要我們的Makefile寫得夠好,所有的這一切,我們只用一個make命令就可以完成,make命令會自動智能地根據當前的文件修改的情況來確定哪些文件需要重編譯,從而自己編譯所需要的文件和鏈接目標程序。
3. Makefile簡單示例
3.1 代碼模塊
- main.h
- main.cpp
- a.cpp
- b.cpp
- c.cpp
- d.cpp
3.2 Makefile基本規則
目標文件:依賴文件 (tab)編譯規則$^ 代表所有依賴文件$@代表目標文件 main:main.o a.o b.o c.o d.og++ $^ -o $@ %.o:%.cppg++ -c $^ -o $@ .PHONY:clean clean:rm -rf *.o用%.o和%.c代替所有的依賴文件也是可以的 隱式規則,生成.o文件自動去尋找同名.c文件進行編譯,所以.o的目標都不用寫。偽指令(.PHONY) 如果文件的時間戳沒有發生變化,我們make的時候是不會在編譯的,因此我們可以用偽指令來讓每次make都會執行此文件make main make clean(這兩個都可以試一下)4. Makefile優點
makefile帶來的好處就是——“自動化編譯”,一旦寫好,只需要一個make命令,整個工程完全自動編譯,極大的提高了軟件開發的效率。make是一個命令工具,是一個解釋makefile中指令的命令工具,一般來說,大多數的IDE都有這個命令,比如:Delphi的make,Visual C++的make,Linux下GNU的make。可見,makefile都成為了一種在工程方面的編譯方法。
總結
以上是生活随笔為你收集整理的【Linux】Makefile文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Linux】gdb常用的调试命令
- 下一篇: 【Linux】虚拟地址空间