Slog66_自動化工具之make和Makefile1

  • ArthurSlog
  • SLog-66
  • Year·1
  • Guangzhou·China
  • Sep 10th 2018

天之道 損有餘而補不足 人之道則否則 損不足以奉有餘html


開發環境MacOS(High Sierra 10.13.5)

須要的信息和信息源:

開始編碼

  • 切換至桌面,建立一個文件夾 makefile_demo
cd ~/Desktop/ && mkdir makefile_demo
  • 切換至makefile_demo路徑下
cd makefile_demo
  • 編寫一份Makefile文件

Makefilegit

say_hello:
        echo "Hello Malefile"
  • 而後,打開命令行,在當前路徑下輸入一下指令
make
  • 結果是:
echo "Hello Malefile"
Hello Malefile
  • 上面的代碼中;
  1. say_hello 是一個方法,這個方法會被命令行執行,
  2. echo "Hello Malefile" 是方法say_hello的主體,echo是系統指令,指令的結果 是在控制檯打印「Hello Malefile」這行字
  3. echo "Hello Malefile" 這一行不是咱們要的,因此在前面加上@,取消命令自己的輸出

Makefilegithub

say_hello:
        @echo "Hello Malefile"
  • 從新試試,打開命令行,在當前路徑下輸入一下指令
make
  • 結果是:
Hello Malefile
  • 如今來寫一個經常使用的Makefile文件,這裏面有三個方法

Makefilenpm

say_hello:
    @echo "Hello Malefile"

generate:
    @echo "Create some text file..."
    touch file-{1..10}.txt

clean:
    @echo "Cleaning up..."
    rm *.txt
  • 從新試試,打開命令行,在當前路徑下輸入一下指令
make
  • 結果仍舊是:
Hello Malefile
  • 下面的兩個函數並無執行
  • 咱們須要搞點額外的東西,默認執行的方法換一下
  • 咱們須要設置一個對象,把要執行的函數填入這個對象裏,舉個栗子:「.DEFAULT_GOAL := generate」
  • 完整的代碼以下:

Makefilesegmentfault

.DEFAULT_GOAL := generate

say_hello:
    @echo "Hello Malefile"

generate:
    @echo "Create some text files..."
    touch file-{1..10}.txt

clean:
    @echo "Cleaning up..."
    rm *.txt
  • 而後,打開命令行,在當前路徑下輸入一下指令
make
  • 結果是:
Create some text files...
touch file-{1..10}.txt
  • 如今默認執行的方法就是generate了
  • 可是設置.DEFAULT_GOAL對象一次只能運行一個方法
  • 若是要調用多個方法,就須要設置all對象,栗子以下:

Makefile微信

all: say_hello generate

say_hello:
        @echo "Hello Malefile"

generate:
        @echo "Creating some files..."
        touch file-{1..10}.txt

clean:
        @echo "Cleaning up..."
        rm *.txt
  • 先把剛剛生成的.txt文件都刪掉
rm -rf *.txt
  • 而後,打開命令行,在當前路徑下輸入一下指令
make
  • 結果是:
Hello Malefile
Create some files...
touch file-{1..10}.txt
  • ok,如今已經兩個方法都執行了
  • 如今,在說一個 「強制全部文件更新」 的方法

Markfileless

.PHONY: all say_hello generate clean

all: say_hello generate

say_hello:
        @echo "Hello Malefile"

generate:
        @echo "Creating some files..."
        touch file-{1..10}.txt

clean:
        @echo "Cleaning up..."
        rm *.txt
  • 看到上面的栗子,」.PHONY「裏有四個「強制全部文件更新」的方法:
  1. all // all裏面的方法是say_hello + generate
  2. say_hello
  3. generate
  4. clean
  • 當你的make不起做用的時候,嘗試一下設置「.PHONY」對象的值
  • 至此,完成了一個基礎的Makefile的瞭解和編寫。

歡迎關注個人微信公衆號 ArthurSlog

關注微信公衆號「ArthurSlog」

若是你喜歡個人文章 歡迎點贊 留言

謝謝

相關文章
相關標籤/搜索