Android之makefile
阿新 • • 發佈:2018-11-01
在Android的原始碼中,隨處可見Makefile,那麼Makefile到底是用來幹嘛的呢?其實Makefile和Maven、ANT、Gradle一樣,屬於構建工具,當專案比較龐大的時候,就可以使用makefile來構建專案了
makefile簡介
一個工程中的原始檔不計其數,其按型別、功能、模組分別放在若干個目錄中,Makefile定義了一系列的規則來指定,哪些檔案需要先編譯,哪些檔案需要後編譯,哪些檔案需要重新編譯,甚至於進行更復雜的功能操作,因為Makefile就像一個Shell指令碼一樣,其中也可以執行作業系統的命令
之前做C語言筆記的時候就寫過關於Makefile的基本語法,這裡就不再羅嗦了
連結: C語言之makefile
makefile在Android中的運用
在編譯Android系統的時候,一個make就可以生成,那為何會生成呢?
其實仔細看,Android系統原始碼中,Makefile無處不在,其實整個過程就是Makefile在構建
Makefile在構建時候,make會檢查檔案時候是否被修改,修改參與編譯,沒修改的話就不會編譯
Makefile有一些系統定義的變數和函式
Android常用的指定:
名稱 | 作用 |
---|---|
LOCAL_PATH := $(call my-dir) |
呼叫my-dir函式,返回Android.mk檔案所在的目錄,放在第一行,地址當前所在目錄 |
include file Makefile |
可以引入其他的Makefile檔案 |
include $(CLEAR_VARS) |
編譯模組時,清空LOCAL_MODULE等引數 |
LOCAL_MODULE |
模組名稱 |
LOCAL_SRC_FILES |
編譯需要的原始檔 |
LOCAL_C_INCLUDES |
需要的標頭檔案 |
LOCAL_SHARED_LIBRARIES |
編譯需要的動態庫 |
LOCAL_LDLIBS |
連結庫 |
具體更深入關於Makefile可以參考:《跟我一起寫 Makefile》
無意間發現一篇不錯的部落格,連結:Makefile 使用總結