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