0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

【Makefile】簡單介紹

_light ? 來源:_light ? 作者:_light ? 2022-11-18 10:22 ? 次閱讀

基本規(guī)則

makefile的規(guī)則,一般由以下組成

目標: 依賴列表
	命令列表

1、其中第一條規(guī)則中的”目標“,將會成為終極目標。我們最終目的,就是為了生成這個目標的

2、每一個規(guī)則中的目標。都可以是一個文件,也可以是一個標簽

3、每一個規(guī)則中的目標,不一定要有依賴

目標:
	命令列表

此時的目標,我們成為”偽目標“

4、每一個規(guī)則,也不一定有命令列表

案例

假設我們有三個.c源文件,main.c、f1.c、f2.c

f1.c

#include "stdio.h"

void f1()

{

printf("This is f1
);

}

f2.c

#include "stdio.h"

void f2()

{

printf("This is f2
);

}

然后我們在main里面調(diào)用f1與f2這兩個函數(shù),接著編譯、運行即可

下面我們編寫一下Makefile

target:main.c f1.c f2.c
	gcc f1.c f2.c main.c

輸入命令 make 即可完成編譯

如果不想打印出gcc f1.c f2.c main.c這條命令,可以在Makefile文件中的命令列表前加上一個@符號

變量

創(chuàng)建變量,與shell類似

number = '56',此時,變量number的值就是56,

可以使用echo驗證: echo &$number

其中這個符號$就是使用已聲明的變量

變量的三種賦值方式

第一種:'=' 稱為”延時展開賦值“
	例如:
		temp = $number
		number = '56'
	此時你輸出'temp'等于56,所謂延時展開賦值就是當number成功賦值之后,再把number的值賦給temp
第二種:':='稱為”立即展開賦值“
    例如:
		temp := $number
		number = '56'
	此時你輸出'temp'就為空
第三種:'?='稱為條件賦值
	例如:
		temp ?= $number
	假如在這之前沒有給變量temp賦過值,那么就會把number的值賦給temp,反之就不會把number的值賦給temp

特殊變量

$@: 當前規(guī)則中的目標

$^: 當前規(guī)則中的所有依賴

$<: 當前依賴中的第一個

$$: 當前執(zhí)行的進程的進程編號

$*: 模式規(guī)則中的所有%匹配的部分

$?: 模式規(guī)則中所有比所在規(guī)則中的目標更 新的文件組成的列表

下面借助變量優(yōu)化一下上述案例的Makefile

SOURCE=main.c f1.c f2.c
target:$(SOURCE)
	gcc $^

模式規(guī)則

%.o: %.c
	gcc -c $<

%.c會匹配.c文件前面的部分,相當于shell中的*.c

模式規(guī)則執(zhí)行時,是一個循環(huán)取出的過程,每次取出一個.c,調(diào)用命令生成對應的.o

模式規(guī)則舉例

#strat
TARGET = a.out
SRCS = main.c

$(TARGET): $(SRCS:.c = .o)
	gcc $^ -o $@
#$(SRCS:.c=.o) 可以理解為目標所依賴文件是由.c文件生成的.o文件

#模式規(guī)則
%.o: %.c
	gcc -c $<   #模式規(guī)則每次取出一個,所以這里用$<

#end

寫Makefile系列的文章是做個筆記,為了以后方便復習,里面應該有許多BUG,等學一段時間后會繼續(xù)完善

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Makefile
    +關注

    關注

    1

    文章

    125

    瀏覽量

    19153
收藏 人收藏

    評論

    相關推薦

    linux系統(tǒng)中Makefile的使用方法

    的基礎用法講起,逐步深入到更高級的應用,為你呈現(xiàn)一個全面而詳細的Makefile使用手冊。 第一:Makefile的基本結(jié)構(gòu) 一個最簡單Makefile包含規(guī)則,規(guī)則由目標(targ
    的頭像 發(fā)表于 05-11 08:49 ?549次閱讀

    關于Makefile自動生成-autotools的使用

    Makefile并非日常任務,但遇見需要構(gòu)建大型軟件項目時,利用工具自動生成Makefile就顯得尤為關鍵。接下來,我們將重點介紹一款自動化構(gòu)建工具——Autoto
    的頭像 發(fā)表于 07-25 15:50 ?1411次閱讀
    關于<b class='flag-5'>Makefile</b>自動生成-autotools的使用

    怎樣去使用Makefile+VCS+Verdi做個簡單的Test Bench?

    怎樣去使用Makefile+VCS+Verdi做個簡單的Test Bench?有哪些操作步驟?
    發(fā)表于 06-18 06:28

    駕馭Makefile

    駕馭Makefile在網(wǎng)上你能找到很多關于Makefile的學習資料,但絕大部分給你的只是一個知識點,與將Makefile運用到項目中(尤其是大型項目)的差距非常的大。因為,將Makefile
    發(fā)表于 01-05 17:05 ?9次下載

    關于Linux 2.6內(nèi)核Makefile的分析

    介紹文章都是基于2.4內(nèi)核的,可以說關于2.6內(nèi)核Makefile相關的文章鳳毛麟角,筆者抽時間完成了這篇分析文章,讓讀者迅速熟悉Linux最新Makefile體系,從而加深對內(nèi)核的理解,同時也希望能
    發(fā)表于 11-02 10:12 ?1次下載

    linux makefile教程

     什么是makefile?或許很多Winodws的程序員都不知道這個東西,因為那些Windows的IDE都為你做了這個工作,但我覺得要作一個好的和professional的程序員,makefile
    發(fā)表于 11-12 09:11 ?5266次閱讀

    Makefile是什么?Makefile工作原理是怎樣的?Makefile經(jīng)典教程免費下載

    Makefile的重要性 會不會寫makefile,從一個側(cè)面說明了一個人是否具備完成大型工程的能力 makefile帶來的好處就是——“自動化編譯”,一旦寫好,只需要一個make命令,整個工程完全自動編譯,極大的提高了軟件
    發(fā)表于 09-12 17:19 ?0次下載
    <b class='flag-5'>Makefile</b>是什么?<b class='flag-5'>Makefile</b>工作原理是怎樣的?<b class='flag-5'>Makefile</b>經(jīng)典教程免費下載

    Linux關于Makefile的用法介紹

    Make可以從一個名為Makefile的文件中獲得如何構(gòu)建程序的知識,該文件列出了每個非源文件以及如何從其他文件計算它。當你編寫一個程序時,你應該為它編寫一個Makefile文件,這樣就可以使用Make來編譯和安裝這個程序。
    發(fā)表于 12-24 10:36 ?1862次閱讀

    Makefile的項目模板免費下載

    本文檔的主要內(nèi)容詳細介紹的是Makefile的項目模板免費下載 可根據(jù)項目名稱修改。
    發(fā)表于 06-12 08:00 ?11次下載
    <b class='flag-5'>Makefile</b>的項目模板免費下載

    Linux內(nèi)核的Makefile、Kconfig和.config文件

    問題都和Makefile、Kconfig、.config有關,下面簡單談談Makefile、Kconfig和.config。希望對你有啟發(fā)。 三者的作用: 簡單來說就是去飯店點菜:Kc
    的頭像 發(fā)表于 11-12 17:31 ?2963次閱讀

    芯片設計中的Makefile簡單教程

    Makefile可以根據(jù)指定的依賴規(guī)則和文件是否有修改來執(zhí)行命令。常用來編譯軟件源代碼,只需要重新編譯修改過的文件,使得編譯速度大大加快。
    的頭像 發(fā)表于 12-24 17:41 ?866次閱讀

    嵌入式中的Makefile應用

    文章目錄一.Makefile 引入二. Makefile語法1.通配符2.假象目標3.變量三.Makefile函數(shù)四.實例本文主要總結(jié)一下嵌入式開發(fā)中的Makefile,一般項目中都需
    發(fā)表于 11-03 17:06 ?11次下載
    嵌入式中的<b class='flag-5'>Makefile</b>應用

    MakefileMakefile與shell命令的聯(lián)系

    博主最近在項目實踐過程中,需要深度定制項目的Makefile,其中有些復雜的流程必須得借助shell腳本才能高效地完成,為此博主特意深入學習了在Makefile種調(diào)用shell命令的方法。
    的頭像 發(fā)表于 07-11 09:06 ?3248次閱讀
    【<b class='flag-5'>Makefile</b>】<b class='flag-5'>Makefile</b>與shell命令的聯(lián)系

    Makefile簡單實用的Makefile模板來了

    【Linux + Makefile簡單實用的Makefile模板來了
    的頭像 發(fā)表于 08-31 12:46 ?1842次閱讀
    【<b class='flag-5'>Makefile</b>】<b class='flag-5'>簡單</b>實用的<b class='flag-5'>Makefile</b>模板來了

    Makefile】函數(shù)介紹

    Makefile 中調(diào)用函數(shù)的方法跟變量的使用類似,以“**()”或“**{}”符號包含函數(shù)。
    的頭像 發(fā)表于 11-18 10:23 ?903次閱讀