第一:Makefile文件編寫|
1.第一個字母大寫,其余的都是小寫。|
2.Makefile關(guān)系到了整個工程的編譯。|
3.可以執(zhí)行操作系統(tǒng)的命令。|
4.其實Makefile的本質(zhì)是定義了文件之間的依賴性問題。|
5.第一個字母大寫,其余的都是小寫。|
make命令執(zhí)行時,需要一個 Makefile 文件,以告訴make命令需要怎么樣的去編譯和鏈接程序。
第二: 例子
1.我們使用gcc來編譯多個源文件時,使用執(zhí)行多條命令,但是使用make命令就不一
樣了,見下面
2.編寫Makefile文件
main:one.o two.o three.o
gcc one.o two.o three.o –o main
one.o:one.c
gcc -c one.c
two.o:two.c
gcc -c two.c
three.o:three.c
gcc -c three.c
clean:
rm one.o two.o three.o //使用make clean 刪除中間文件
第三:總結(jié)
總結(jié)一下Makefile的規(guī)則:
[c-sharp] view plaincopy
target ... : prerequisites ...
command
...
...
target也就是一個目標(biāo)文件,可以是Object File,也可以是執(zhí)行文件。還可以是
一個標(biāo)簽(Label)。
prerequisites就是要生成那個target所需要的文件或是目標(biāo)。
command也就是make需要執(zhí)行的命令。(任意的Shell命令)
這是一個文件的依賴關(guān)系,也就是說,target這一個或多個的目標(biāo)文件依賴于
prerequisites中的文件,其生成規(guī)則定義在command中。說白一點就是說,
prerequisites中如果有一個以上的文件比target文件要新的話,command所定
義的命令就會被執(zhí)行。這就是Makefile的規(guī)則。也就是Makefile中最核心的內(nèi)容。
第四:make命令工作過程總結(jié)
1、make會在當(dāng)前目錄下找名字叫“Makefile”的文件。
2、如果找到,它會找文件中的第一個目標(biāo)文件(target),并把這個文件作為最
終的目標(biāo)文件。像上面的例子為file
3、如果file文件不存在,或是file所依賴的后面的 .o 文件的文件修改時間要比
file這個文件新,那么,他就會執(zhí)行后面所定義的命令來生成file這個文件。
4、如果file所依賴的.o文件也不存在,那么make會在當(dāng)前文件中找目標(biāo)為.o文件
的依賴性,如果找到則再根據(jù)那一個規(guī)則生成.o文件。
5、當(dāng)然,你的C文件和H文件是存在的啦,于是make會生成 .o 文件,然后再用 .o
文件生命make的終極任務(wù),也就是執(zhí)行文件file了。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。