makefile

makefile中的變量與bash中的變量,語法稍有不同,makefile變量的基本語法為:

變量之間用 = 隔開,且 = 兩側(cè)可以有空格
變量左邊不可以有鍵空格
習(xí)慣上變量以大寫字母
引用變量使用大括號或括號,如{變量}或(變量)
$@表示當(dāng)前的目標(biāo)

為了避免與名為clean的文件沖突,最好在clean前面加.PHONY

makefile是這樣定義的。

target ...: prerequisites
            command
            command

target代表的是一個 標(biāo)的,prerequisites代表的是這個標(biāo)的所依賴的標(biāo)的,下面那個command就是生成這個標(biāo)的的命令。

那么那個標(biāo)的代表的是什么呢?其實它就是代表了一個與他同名的文件,編譯之后生成的.o文件,編譯鏈接之后生成的可執(zhí)行文件或者其他任何類型的文件,例如main這個標(biāo)的代表的就是main這個可執(zhí)行文件。
exp:

main:
    gcc -o main main.c

它做的工作是這樣的:
    1.查找makefile,默認(rèn)執(zhí)行第一個標(biāo)的(即main)。
    2.檢查main這個文件存不存在或者需不需要更新。
    3.如果main文件不存在,則執(zhí)行下面那個gcc命令來生成這個文件。
    4.如果main文件已經(jīng)存在,且它的修改時間要早于依賴文件的修改時間(即這個main文件過期了),那么執(zhí)行下面的gcc命令來生成這個文件。

總結(jié)一下:

  • 1.makefile中的每個標(biāo)的都代表了一個文件。
  • 2.如果只運行make命令,那么默認(rèn)執(zhí)行第一個標(biāo)的。
  • 3.執(zhí)行一個標(biāo)的時,會做兩件事情:
    • 3.1.查看與這個標(biāo)的同名的文件是否存在,如果不存在,那么就運行這個標(biāo)的下面的命令。
    • 3.2.如果與這個標(biāo)的同名的文件已經(jīng)存在,那么就檢查與這個標(biāo)的同名的文件是否需要更新(即標(biāo)的文件的修改時間是否早于依賴文件的修改時間),如果需要更新,那么就運行這個標(biāo)的下面的命令。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Makefile的規(guī)則 在講述這個Makefile之前,還是讓我們先來粗略地看一看Makefile的規(guī)則。 tar...
    小y同學(xué)hh閱讀 704評論 0 0
  • 什么是 Makefile 呢? Makefile 可以簡單的認(rèn)為是一個工程文件的編譯規(guī)則,描述了整個工程的編譯和鏈...
    JackHCC閱讀 10,899評論 0 2
  • 本文部分內(nèi)容引用: 中文維基百科。 一個簡單的Makefile教程。 Makefile簡介 在軟件開發(fā)中,make...
    凌杰_owlman閱讀 33,062評論 8 59
  • 什么是Makefile Makefile定義了一系列的規(guī)則來指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件...
    陳HHH閱讀 452評論 0 0
  • Makefile簡介 在軟件開發(fā)中,make通常被視為一種軟件構(gòu)建工具。該工具主要經(jīng)由讀取一種名為“makefil...
    SunnyZhang的IT世界閱讀 618評論 0 1

友情鏈接更多精彩內(nèi)容