那曲檬骨新材料有限公司

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

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

3天內不再提示

【Makefile】簡單介紹

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

基本規則

makefile的規則,一般由以下組成

目標: 依賴列表
	命令列表

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

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

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

目標:
	命令列表

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

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

案例

假設我們有三個.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里面調用f1與f2這兩個函數,接著編譯、運行即可

下面我們編寫一下Makefile

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

輸入命令 make 即可完成編譯

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

變量

創建變量,與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

特殊變量

$@: 當前規則中的目標

$^: 當前規則中的所有依賴

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

$$: 當前執行的進程的進程編號

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

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

下面借助變量優化一下上述案例的Makefile

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

模式規則

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

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

模式規則執行時,是一個循環取出的過程,每次取出一個.c,調用命令生成對應的.o

模式規則舉例

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

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

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

#end

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

審核編輯:湯梓紅

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

    關注

    1

    文章

    125

    瀏覽量

    19220
收藏 人收藏

    評論

    相關推薦

    linux系統中Makefile的使用方法

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

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

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

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

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

    駕馭Makefile

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

    關于Linux 2.6內核Makefile的分析

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

    linux makefile教程

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

    makefile的基本語法

     在Makefile中,最重要的三個概念是:目標(target)、依賴關系(dependency)和命令(command)。目標是指要干什么,即運行make后生成什么;依賴是指明目標所依賴的其他目標;命令則告訴make如何生成目標,這三個概念是通過Makefile中的規則
    發表于 11-12 10:15 ?1.2w次閱讀

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

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

    Linux關于Makefile的用法介紹

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

    Makefile的項目模板免費下載

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

    Linux內核的Makefile、Kconfig和.config文件

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

    芯片設計中的Makefile簡單教程

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

    交叉編譯鏈下的Makefile(STM32F4xx)

    arm-none-eabi- 在 Makefile 中的應用過程,對比于嵌入式可視編譯器 keil_v5 有什么共同點,編譯思維是怎樣的,并完成一個簡單項目的Makefile編寫。
    發表于 12-04 12:36 ?7次下載
    交叉編譯鏈下的<b class='flag-5'>Makefile</b>(STM32F4xx)

    Makefile簡單實用的Makefile模板來了

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

    Makefile】函數介紹

    Makefile 中調用函數的方法跟變量的使用類似,以“**()”或“**{}”符號包含函數。
    的頭像 發表于 11-18 10:23 ?1019次閱讀
    狮威百家乐官网娱乐场| 无锡百家乐的玩法技巧和规则| 鸿运娱乐| 百家乐官网详解| 百家乐网站平台| 丹江口市| 百家乐龙虎桌布| 利高百家乐官网现金网| 百家乐知敌便能制胜| 宝格丽娱乐城| 百家乐为什么庄5| 七胜国际娱乐| 波音百家乐现金网投注平台排名导航| 长治县| 百家乐是怎样算牌| 博彩百家乐官网网址| 网上百家乐试玩网址| 百家乐官网详情| 蜀都棋牌下载| 百家乐赢法口诀| 行唐县| 大世界百家乐娱乐网| 百家乐官网庄家优势| 大发888手机版下载安| 大东方百家乐游戏| 真人百家乐官网皇冠网| 百家乐必胜绝| 圣保罗百家乐官网的玩法技巧和规则| 足球波胆| 百家乐网上玩法| 百家乐官网的路子怎么| 足球开户| 百家乐baccarat| 单机百家乐官网棋牌| 大发888 注册账号| 24山安葬择日吉凶| 百家乐官网连输的时候| 太阳城娱乐正网| 打百家乐的介绍| 百家乐官网有方法赚反水| 大发888提款|