Android .mk文件語法規(guī)范

一個簡單的"hello world"的例子,比如明也,下面的文件:

sources/helloworld/helloworld.c
sources/helloworld/Android.mk

'helloworld.c'是一個JNI共享庫,實現(xiàn)返回"hello world"字符串的原生方法。
相應的Android.mk文件會像下面這樣:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE:= helloworld
LOCAL_SRC_FILES := helloworld.c
include $(BUILD_SHARED_LIBRARY)

解釋一下這幾行代碼:

LOCAL_PATH := $(call my-dir)
一個Android.mk file首先必須定義好LOCAL_PATH變量办素。它用于在開發(fā)樹中查找源文件。在這個例子中祸穷,宏函數(shù)’my-dir’, 由編譯系統(tǒng)提供性穿,用于返回當前路徑(即包含Android.mk file文件的目錄)。

include $( CLEAR_VARS)
CLEAR_VARS由編譯系統(tǒng)提供雷滚,指定讓GNU MAKEFILE為你清除許多LOCAL_XXX變量(例如 LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES, 等等...),除LOCAL_PATH 需曾。這是必要的,因為所有的編譯控制文件都在同一個GNU MAKE執(zhí)行環(huán)境中祈远,所有的變量都是全局的呆万。

LOCAL_MODULE := helloworld
LOCAL_MODULE變量必須定義,以標識你在Android.mk文件中描述的每個模塊车份。名稱必須是唯一的谋减,而且不包含任何空格。注意編譯系統(tǒng)會自動產(chǎn)生合適的前綴和后綴扫沼,換句話說出爹,一個被命名為'foo'的共享庫模塊,將會生成'libfoo.so'文件缎除。
**重要注意事項: **
如果你把庫命名為‘libhelloworld’严就,編譯系統(tǒng)將不會添加任何的lib前綴,也會生成libhelloworld.so器罐,這是為了支持來源于Android平臺的源代碼的Android.mk文件盈蛮,如果你確實需要這么做的話。

LOCAL_SRC_FILES := helloworld.c
LOCAL_SRC_FILES變量必須包含將要編譯打包進模塊中的C或C++源代碼文件技矮。注意抖誉,你不用在這里列出頭文件和包含文件,因為編譯系統(tǒng)將會自動為你找出依賴型的文件衰倦;僅僅列出直接傳遞給編譯器的源代碼文件就好袒炉。【注意樊零,默認的C++源碼文件的擴展名是’.cpp’. 指定一個不同的擴展名也是可能的我磁,只要定義LOCAL_DEFAULT_CPP_EXTENSION變量孽文,不要忘記開始的小圓點(也就是定義為‘.cxx’,而不是‘cxx’)(當然這一步我們一般不會去改它)】

include $(BUILD_SHARED_LIBRARY)
BUILD_SHARED_LIBRARY是編譯系統(tǒng)提供的變量,指向一個GNU Makefile腳本(應該就是在build/core目錄下的shared_library.mk)夺艰,負責收集自從上次調(diào)用'include $(CLEAR_VARS)'以來芋哭,定義在LOCAL_XXX變量中的所有信息,并且決定編譯什么郁副,如何正確地去做减牺。并根據(jù)其規(guī)則生成靜態(tài)庫。同理對于靜態(tài)庫存谎。

#LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := swscale
LOCAL_SRC_FILES := libswscale-4.so
include $(PREBUILT_SHARED_LIBRARY)

#LOCAL_PATH := $(call my-dir)
$(warning "the value of LOCAL_PATH is$(LOCAL_PATH)")
include $(CLEAR_VARS)
LOCAL_MODULE := FfmpegCmd
LOCAL_SRC_FILES := com_mazaiting_ffmpegcmdtest_FFmpegCmd.c ffmpeg.c ffmpeg_opt.c cmdutils.c ffmpeg_filter.c
LOCAL_C_INCLUDES := F:/test/FFmpegCmdTest/ffmpeg-3.3.6-1
LOCAL_LDLIBS := -llog -lz -ldl
LOCAL_SHARED_LIBRARIES := avcodec avdevice avfilter avformat avutil swresample swscale
include $(BUILD_SHARED_LIBRARY)

解釋:

  • LOCAL_MODULE 本地模塊
  • LOCAL_SRC_FILES 本地源文件
  • PREBUILT_SHARED_LIBRARY 指已經(jīng)編譯好的動態(tài)庫
  • (warning (LOCAL_PATH)") 可以打印出LOCAL_PATH這個變量
  • LOCAL_C_INCLUDES 本地源碼路徑
  • LOCAL_LDLIBS 指定庫或至少要鏈接到結果中的對象
  • LOCAL_SHARED_LIBRARIES 編譯好的動態(tài)庫拔疚,為此模塊中的依賴
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市既荚,隨后出現(xiàn)的幾起案子稚失,更是在濱河造成了極大的恐慌,老刑警劉巖恰聘,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件句各,死亡現(xiàn)場離奇詭異,居然都是意外死亡晴叨,警方通過查閱死者的電腦和手機凿宾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來篙螟,“玉大人菌湃,你說我怎么就攤上這事”槁裕” “怎么了惧所?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長绪杏。 經(jīng)常有香客問我下愈,道長,這世上最難降的妖魔是什么蕾久? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任势似,我火速辦了婚禮,結果婚禮上僧著,老公的妹妹穿的比我還像新娘履因。我一直安慰自己,他們只是感情好盹愚,可當我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布栅迄。 她就那樣靜靜地躺著,像睡著了一般皆怕。 火紅的嫁衣襯著肌膚如雪毅舆。 梳的紋絲不亂的頭發(fā)上西篓,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天,我揣著相機與錄音憋活,去河邊找鬼岂津。 笑死,一個胖子當著我的面吹牛悦即,可吹牛的內(nèi)容都是我干的吮成。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼盐欺,長吁一口氣:“原來是場噩夢啊……” “哼赁豆!你這毒婦竟也來了仅醇?” 一聲冷哼從身側(cè)響起冗美,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎析二,沒想到半個月后粉洼,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡叶摄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年属韧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛤吓。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡宵喂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出会傲,到底是詐尸還是另有隱情锅棕,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布淌山,位于F島的核電站裸燎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏泼疑。R本人自食惡果不足惜德绿,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望退渗。 院中可真熱鬧移稳,春花似錦、人聲如沸会油。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钞啸。三九已至几蜻,卻和暖如春喇潘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背梭稚。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工颖低, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人弧烤。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓忱屑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親暇昂。 傳聞我的和親對象是個殘疾皇子莺戒,可洞房花燭夜當晚...
    茶點故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內(nèi)容