今天就跟大家聊聊有關(guān)怎么掌握Makefile的知識,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
創(chuàng)新互聯(lián)技術(shù)團隊十載來致力于為客戶提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計、品牌網(wǎng)站制作、全網(wǎng)整合營銷推廣、搜索引擎SEO優(yōu)化等服務(wù)。經(jīng)過多年發(fā)展,公司擁有經(jīng)驗豐富的技術(shù)團隊,先后服務(wù)、推廣了近千家網(wǎng)站,包括各類中小企業(yè)、企事單位、高校等機構(gòu)單位。
如果你現(xiàn)在使用 macOS 或者 Linux,那么你可以在終端輸入命令man make,查看make命令的幫助文檔,如下圖所示:
通過make命令,你可以快速運行一大段 Shell 命令,從而實現(xiàn)一鍵編譯代碼,一鍵格式化代碼等等功能。
要學習 Makefile,你需要有一個Linux 或者 macOS,然后需要知道兩個概念:make命令和Makefile文件。其中,Makefile文件是你自己寫的一個文本文件,它的名字叫做Makefile,不能修改大小寫,只能叫這個名字。而make是 macOS 和 Linux 中自帶的一個命令。當我們執(zhí)行make命令的時候,它自動讀取Makefile文件,從而決定自己要做什么事情。
我們來看一個實際例子。下圖為一段很簡單的 Golang 代碼:
代碼里面,有一些逗號后面沒有空格,結(jié)構(gòu)體也寫得參差不齊。當我們要格式化一個.go文件的時候,一般是在當前文件夾下面執(zhí)行命令:
gofmt -w xxx.go
運行以后,如下圖所示:
你為了執(zhí)行這個命令,你需要敲15次鍵盤。而且如果你的項目里面有很多個.go文件,并且他們位于不同的文件夾里面,那么你還需要執(zhí)行命令:
find . -name "*.go" | xargs gofmt -w
要敲的鍵盤就更多了。
這個時候,我們可以在項目根目錄創(chuàng)建一個Makefile文件,其內(nèi)容如下:
fmt: find . -name "*.go" | xargs gofmt -w
如下圖所示:
于是,當我們在項目根目錄執(zhí)行命令:make fmt的時候,整個項目里面的所有.go文件都會被自動格式化。
Makefile文件的格式如下:
名字1: shell 命令1 shell 命令2 shell 命令3 名字2: shell 命令4 shell 命令5 shell 命令6
其中,名字1 名字2用于執(zhí)行命令make 名字,每一個名字下面可以跟很多條 Shell 命令。這里看起來有點像是 Python 的縮進。但需要特別注意的是,Makefile 的縮進只能使用 Tab 鍵,不能使用空格。
我們再來舉個例子,現(xiàn)在,我需要把項目編譯生成一個可執(zhí)行文件,然后把這個可執(zhí)行文件連同data.json一起復(fù)制到 一個叫做 output 的文件夾中。那么,我們的 Makefile 可以這樣寫:
fmt: gofmt -w *.go build: rm -rf output mkdir output go build -o JsonReader main.go mv JsonReader ./output/ cp data.json ./output/
然后,當我們執(zhí)行命令make build的時候,它下面的5行命令就一次性自動執(zhí)行了。
再來一個例子,可能有一些程序開發(fā)完成以后,需要在本地 Docker 環(huán)境里面運行。但是如果已經(jīng)有一個同名容器在運行了,我們必須先停止容器,刪除容器,然后才能重新運行。但是如果有了 Makefile,這也就是一行命令的事情:
deploy: docker build -t xxx:latest docker stop json_reader docker rm json_reader docker run --name json_reader --network host -d xxx:latest
除此之外,Makefile 還支持串聯(lián)多個名字下面的 shell 命令。例如,我想先格式化代碼,然后編譯成可執(zhí)行文件,最后再使用 Docker 部署,那么,我們最終的 Makefile 文件如下圖所示:
此時,我只需要在項目根目錄中執(zhí)行命令make,不帶任何參數(shù),那么,fmt、build和deploy下面的所有 Shell 命令都會按順序依次執(zhí)行。從而大大減少了我們的工作量。
可以說,無論是 Golang 項目還是 Python 還是其他項目,使用 Makefile 來自動化執(zhí)行一些繁瑣重復(fù)的命令,是一個一勞永逸的事情。
看完上述內(nèi)容,你們對怎么掌握Makefile的知識有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。
當前標題:怎么掌握Makefile的知識
URL地址:http://vcdvsql.cn/article10/iipodo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、自適應(yīng)網(wǎng)站、電子商務(wù)、搜索引擎優(yōu)化、建站公司、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)