在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

全面而詳細(xì)的Makefile使用手冊(cè)

Linux愛好者 ? 來源:Linux愛好者 ? 2024-01-24 12:35 ? 次閱讀

Makefile是一種編譯控制文件,廣泛用于項(xiàng)目的自動(dòng)化構(gòu)建。它定義了一系列的規(guī)則來指導(dǎo)構(gòu)建的過程。通過Makefile,開發(fā)者可以輕松管理大型項(xiàng)目的編譯鏈接、清理等任務(wù)。本文將從Makefile的基礎(chǔ)用法講起,逐步深入到更高級(jí)的應(yīng)用,為你呈現(xiàn)一個(gè)全面而詳細(xì)的Makefile使用手冊(cè)。

Makefile的基本結(jié)構(gòu)

一個(gè)最簡單的Makefile包含規(guī)則,規(guī)則由目標(biāo)(target)、依賴(dependencies)和命令(commands)三部分組成:

target: dependencies
    commands

命令前的Tab鍵是必須的。下面是一個(gè)簡單的示例:

hello: hello.c
    gcc -o hello hello.c

變量的使用

在Makefile中聲明變量可以使得我們的代碼更加簡潔。

CC=gcc
CFLAGS=-std=c99
LDFLAGS=
OBJ=main.o utils.o

app: $(OBJ)
    $(CC) -o app $(OBJ) $(LDFLAGS)

main.o: main.c
    $(CC) $(CFLAGS) -c main.c

utils.o: utils.c utils.h
    $(CC) $(CFLAGS) -c utils.c

通用規(guī)則和模式匹配

模式規(guī)則可以減少我們重復(fù)相同命令的工作量。

%.o: %.c
    $(CC) $(CFLAGS) -c $<

$

自動(dòng)化變量

Makefile提供了一系列自動(dòng)化變量,它們?cè)谝?guī)則的命令中非常有用:

$@表示規(guī)則中的目標(biāo)文件名;

$^表示所有的依賴文件列表;

$

$?表示所有比目標(biāo)新的依賴文件列表。

函數(shù)的使用

Makefile中內(nèi)置了許多函數(shù),用以執(zhí)行字符串操作、文件操作等。

例如,獲取源文件列表:

SRC=$(wildcard *.c)
OBJ=$(patsubst %.c,%.o,$(SRC))

控制Make的行為

make -B強(qiáng)制重新編譯所有目標(biāo);

make -n顯示將要執(zhí)行的命令而不實(shí)際執(zhí)行;

make -f 指定使用其他名稱的Makefile文件;

make -j允許并行執(zhí)行(多核編譯)。

高級(jí)用法 - 條件判斷

Makefile也支持條件判斷,這在不同環(huán)境需要執(zhí)行不同命令時(shí)非常有用。

ifeq ($(OS),Windows_NT)
    RM=del /Q
else
    RM=rm -f
endif

clean:
    $(RM) *.o

使用變量和文件包含來組織Makefile

對(duì)于大型項(xiàng)目,組織多個(gè)Makefile是一種好方法。

# 在子Makefile中
include config.mk

自定義函數(shù)

通過定義可以重用的函數(shù),你可以使你的Makefile變得更加強(qiáng)大和靈活。

define run-cc
$(CC) $(CFLAGS) -o $@ $^
endef

app: $(OBJ)
    $(call run-cc)

處理多目標(biāo)

定義一個(gè)規(guī)則來批量處理多個(gè)文件。

FILES := file1 file2 file3

all: $(FILES)

$(FILES):
    touch $@

偽目標(biāo)的使用

偽目標(biāo)不代表實(shí)際的文件,它只是一個(gè)動(dòng)作的名稱。

.PHONY: clean

clean:
    rm -f *.o app

調(diào)試Makefile

你可以使用make --debug或添加注釋來幫助調(diào)試Makefile。

app: main.o utils.o
    # 這是一個(gè)鏈接的命令
    $(CC) -o app main.o utils.o

結(jié)語

Makefile是構(gòu)建自動(dòng)化的強(qiáng)大工具,既可以簡化小型項(xiàng)目的構(gòu)建流程,也能夠靈活管理大型應(yīng)用程序的復(fù)雜構(gòu)建系統(tǒng)。通過本文的詳細(xì)論述和豐富示例,您應(yīng)該能夠基本掌握Makefile的各項(xiàng)技能,并在實(shí)際項(xiàng)目中加以應(yīng)用。

希望以上內(nèi)容對(duì)你深入理解和使用Makefile有所幫助。記住,“實(shí)踐出真知”——編寫你自己的Makefile并嘗試使用這些特性是最好的學(xué)習(xí)方式。

審核編輯:發(fā)貨

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

    關(guān)注

    30

    文章

    4891

    瀏覽量

    70306
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    614

    瀏覽量

    28844
  • Makefile
    +關(guān)注

    關(guān)注

    1

    文章

    125

    瀏覽量

    19598

原文標(biāo)題:深入淺出 Makefile:從基礎(chǔ)到高級(jí)應(yīng)用

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

    的基礎(chǔ)用法講起,逐步深入到更高級(jí)的應(yīng)用,為你呈現(xiàn)一個(gè)全面詳細(xì)Makefile使用手冊(cè)。 第一:Mak
    的頭像 發(fā)表于 05-11 08:49 ?1236次閱讀

    freebsd使用手冊(cè)pdf

    freebsd使用手冊(cè)pdfThe FreeBSD Documentation Project FreeBSD 中文計(jì)劃,為PDF文檔格式。FREEBSD使用手冊(cè)分成了三個(gè)邏輯清晰的部分。第一部
    發(fā)表于 10-21 17:22

    EMC分析使用手冊(cè)

    EMC分析使用手冊(cè) [/hide]
    發(fā)表于 10-10 16:33

    USB設(shè)計(jì)及使用手冊(cè)

    USB設(shè)計(jì)及使用手冊(cè)  [hide]USB使用手冊(cè).rar[/hide][此貼子已經(jīng)被作者于2009-11-19 11:52:30編輯過]
    發(fā)表于 11-19 11:51

    DAvE_使用手冊(cè)_8 bit

    DAvE_使用手冊(cè)_8 bit
    發(fā)表于 08-20 09:13

    fpga使用手冊(cè)

    fpga使用手冊(cè),菜鳥必備get
    發(fā)表于 06-09 22:20

    CANopen使用手冊(cè)

    CANopen使用手冊(cè)
    發(fā)表于 09-20 16:01

    1602液晶使用手冊(cè)

    液晶1602的使用手冊(cè)附有應(yīng)用的例子
    發(fā)表于 10-30 17:31

    Cadence使用手冊(cè)經(jīng)典

    Cadence使用手冊(cè)經(jīng)典
    發(fā)表于 01-15 17:05

    加密芯片使用手冊(cè)

    加密芯片的安全性:1、芯片本身硬件的安全,采用U盾芯片2、算法安全,可以采用國家商用密碼算法,如SM1,SM7,SSF33等算法,是保密非公開算法。加密芯片使用手冊(cè)見附件 加密芯片使用手冊(cè).rar (79.94 KB )
    發(fā)表于 07-09 04:35

    Keil軟件使用手冊(cè)

    非常的KEIL軟件使用手冊(cè),內(nèi)部包含詳細(xì)的軟件的使用介紹,含示例詳解
    發(fā)表于 10-20 19:12

    STM32固件庫使用手冊(cè)

    最近領(lǐng)導(dǎo)讓我學(xué)學(xué)嵌入式開發(fā),在網(wǎng)上看了看老前輩們總結(jié)的嵌入式開發(fā)學(xué)習(xí)不歸路,還是決定按照步驟開始學(xué)習(xí)。首先是獲取到《STM32固件庫使用手冊(cè)》和《STM32F10x參考手冊(cè)》兩個(gè)開局手冊(cè),在網(wǎng)上找了
    發(fā)表于 08-04 06:40

    有沒有S32R274的SPE功能詳細(xì)使用手冊(cè)和例子可以參考呢

    請(qǐng)問,有沒有S32R274的SPE功能詳細(xì)使用手冊(cè)和例子可以參考呢,我看了reference manual,但是我還是不知道怎么在軟件中啟動(dòng)這個(gè)功能
    發(fā)表于 03-22 08:23

    JMeter 壓力測(cè)試使用手冊(cè)中文使用手冊(cè)

    JMeter 壓力測(cè)試使用手冊(cè)中文使用手冊(cè)
    發(fā)表于 09-05 09:51 ?11次下載
    JMeter 壓力測(cè)試<b class='flag-5'>使用手冊(cè)</b>中文<b class='flag-5'>使用手冊(cè)</b>

    JMeter壓力測(cè)試使用手冊(cè)的中文使用手冊(cè)

    JMeter壓力測(cè)試使用手冊(cè)的中文使用手冊(cè)
    發(fā)表于 09-08 09:57 ?7次下載
    JMeter壓力測(cè)試<b class='flag-5'>使用手冊(cè)</b>的中文<b class='flag-5'>使用手冊(cè)</b>
    主站蜘蛛池模板: 亚洲精品久久婷婷爱久久婷婷 | 91大神在线免费观看 | 欧美一卡二卡3卡4卡无卡六卡七卡科普 | 深夜释放自己vlog糖心旧版本 | 丁香五香天堂网卡 | 久久伊人精品青青草原高清 | 五月激情六月婷婷 | 国产片一区二区三区 | 天天免费 | 黄色大毛片 | 久久免费精品高清麻豆 | 成人免费看黄网站无遮挡 | 欧美日韩在线成人看片a | 日本高清色图 | 5278欧美一区 | 波多野结衣第一页 | 国产精品久久女同磨豆腐 | 欧美日韩高清性色生活片 | 日日夜夜狠狠 | 四虎在线观看一区二区 | 精品久久久久久久免费加勒比 | 亚洲视频在线视频 | 3344在线观看永久免费 | 国产高清免费在线观看 | 91亚色视频在线观看 | 欲香欲色天天综合和网 | a爱视频| 88xx成人永久免费观看 | 性殴美高清视频 | 美女黄网站人色视频免费国产 | 2019偷偷狠狠的日日 | 美女福利在线观看 | 99综合在线| 视频黄色免费 | 免费能直接在线观看黄的视频 | 色婷婷综合在线 | 欧美成人免费全部观看天天性色 | 天堂网ww| 天天插一插 | 天天插天天舔 | 四虎看黄 |