iT邦幫忙

2022 iThome 鐵人賽

DAY 2
0

前言

Makefile 語法很簡單, 所以末尾有點湊數的(但語法相關可參考)
但工作上配合 pytest 滿常使用 ( 尤其是demo的時候, 畢竟要執行的時候很方便 )

基本語法

run:
    python3 main.py

clean:
    python3 clean_tool.py -env a -flag b -var c 

make run 會執行 python3 main.py
make clean 會執行 python3 clean.py -env a -flag b -var c

PHONY語法

ref: http://sianghuang.blogspot.com/2017/09/makefile-phony.html
.PHONY 一般來說有兩個目的:
為了避免定義的規則和工作目錄下的檔案名稱發生衝突
改善效能
詳細細節可以參考上面那篇文章
一般測試的話以 make test為例

.PHONY: test
test:
    python3 test_main.py

nice to have, 初學的同學也可以先保持簡單且程式能正確執行為主, 但是想寫的完整一些時, 就可以把.PHONY加入

傳入環境變數

run:
	echo $(var)

輸入 make run var=hi
預期會在畫面上看到hi, 表示成功把環境變數透過指令傳入給 Makefile了


以下工作上不一定用到但Makefile語法相關, 有時間再來補充解釋跟說明進來

C 語言編譯binary

gcc -o hello hello.c
sleep 3
./hello

C++ 編譯 Kernel OS

以下為了湊字數, 是C++編譯可執行檔的makefile, 參考價值還不錯但是目前有點離題, 先把程式碼放上來, 等有機會再補充解釋

GPPPARAMS = -m32 -fno-use-cxa-atexit -nostdlib -fno-builtin -fno-rtti -fno-exceptions -fno-leading-underscore
ASPARAMS = --32
LDPARAMS = -melf_i386

objects = loader.o kernel.o

%.o: %.cpp
g++ $(GPPPARAMS) -o $@ -c $<

%.o: %.s
as $(ASPARAMS) -o $@ $<

mykernel.bin: linker.ld $(objects)
ld $(LDPARAMS) -T $< -o $@ $(objects)

install: mykernel.bin
sudo cp $< /boot/mykernel.bin


上一篇
0x04 Shell Script
下一篇
0x06 GoogleAppScript
系列文
從零開始的自動化QA學習之路9
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言