2018/03/29

GNU Makefile 一些筆記

筆記而已

-   開頭,表示該行不報錯
@ 開頭,表示該行只執行,不回顯該行指令

:= 強制改變
+= 追加內容
?= 如果變數已經存在就不改變,如果變數不存在才設定

顯示變數內容(也可以用 error 方便除錯,用完就刪掉)
  $(info $$var is [${var}])

觸發錯誤
  $(error "message")

從 AOSP 看到的整合方式,動態將自己的項目加進編譯流程
  #預設目標指定為 droid
  DEFAULT_GOAL := droid
  $(DEFAULT_GOAL):

  .PHONY: mod1
  mod1:
    @echo "mod1"
  #將 mod1 加入預設目標的依賴,這裡可以透過 if 控制
  $(DEFAULT_GOAL): mod1

  .PHONY: mod2
  mod2:
    @echo "mod2"
  $(DEFAULT_GOAL): mod2