軟體工程兩件事:
1. 寫腳本-- 也就是寫makefile。
以modmesh的makefile作為例子:
.PHONY: default
default: buildext
.PHONY: clean
clean:
rm -f $(MODMESH_ROOT)/modmesh/_modmesh$(pyextsuffix)
make -C $(BUILD_PATH) clean
.PHONY: cmakeclean
cmakeclean:
rm -f $(MODMESH_ROOT)/modmesh/_modmesh$(pyextsuffix)
rm -rf $(BUILD_PATH)
.PHONY: pytest
pytest: $(MODMESH_ROOT)/modmesh/_modmesh$(pyextsuffix)
env $(RUNENV) \
.PHONY,根據這篇文章的說法它叫做「偽目標」(嗯要慢慢用心體會,要認識的還真不少)依據我目前為止的認知上,冒號之前為target,冒號之後為dependency, i.e, target: dependency,並且會層層向下追朔,以上的例子來看default作為target,dependency則是buildext,此時程式就會再向下追朔,找到buildext作為target之處,向下追朔,或是執行裡頭的指令。
To "build the target",則如
make pytest
同樣的事情也不見得要透過這樣的方法來進行,i.e, make clean在terminal中藉由以下的指令產生等效的結果:
rm -f $(MODMESH_ROOT)/modmesh/_modmesh$(pyextsuffix)
rm -rf $(BUILD_PATH)
我想這就是為什麼寫makefile會叫做寫腳本,真的是有異曲同工之妙ㄋ~
2. 命名檔案
-> Questions:
- Make and cmake?
- Dry-run?
- VERBOSE?
留言
張貼留言