學習筆記 Android.mk 自動搜尋

來源:互聯網
上載者:User

標籤:mk   android.mk   cocos2dx   cocos   

最近被Android.mk這東西折騰的一晚,這裡記錄一下。ios就省心多了,不用管那麼多,xcode自己解決了。文本工具:MACVIM(文本編輯工具 非常好用 能清楚分清tab 和空格,以免編寫.mk時出錯)這個檔案是向編譯器描述原始碼檔案,便於它去解析。以下是cocos2dx-3.2建立項目時產生的Android.mk檔案基本文法:“#” 注釋“:=”  賦值“+=”  追加“$”    引用某變數的值#宏函數my-dir返回編譯系統提供的當前路徑,即Android.mk的目錄#如(HelloWorld/proj.android/jni/XX)LOCAL_PATH := $(call my-dir)#初始化模組  重設除LOCAL_PATH變數以外的所有變數 include $(CLEAR_VARS)#匯入庫目錄$(call import-add-path,$(LOCAL_PATH)/../../cocos2d)$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/external)$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos)#模組名,唯一。LOCAL_MODULE := cocos2dcpp_shared#模組檔案名稱,唯一(可選)LOCAL_MODULE_FILENAME := libcocos2dcpp?#把.cpp .c .cc等實現檔案的路徑賦值給LOCAL_SRC_FILES我用的是C++版  所以尾碼是.cpp 我們建立檔案時,需要在這裡添加路徑。LOCAL_SRC_FILES := hellocpp/main.cpp                    ../../Classes/AppDelegate.cpp                    ../../Classes/HelloWorldScene.cpp#配置標頭檔的搜尋範圍LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes#擷取靜態庫LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static#追加靜態庫LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static# LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static# LOCAL_WHOLE_STATIC_LIBRARIES += cocosbuilder_static# LOCAL_WHOLE_STATIC_LIBRARIES += spine_static# LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static# LOCAL_WHOLE_STATIC_LIBRARIES += cocos_network_static# LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static#根據編譯器提供的變數BUILD_SHARED_LIBRARY產生動態庫include $(BUILD_SHARED_LIBRARY)#匯入模組,以下是常用的幾個模組$(call import-module,.)$(call import-module,audio/android)# $(call import-module,Box2D)# $(call import-module,editor-support/cocosbuilder)# $(call import-module,editor-support/spine)# $(call import-module,editor-support/cocostudio)# $(call import-module,network)# $(call import-module,extensions)


如果檔案少  直接在LOCAL_SRC_FILES這個變數裡添加檔案的路徑就好了
可惜我有幾十個檔案,一個個添加還不累死,而且難維護,難擴充,易出錯,。。。


我是個懶人,參考子龍山人的mk改寫了一下
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)$(call import-add-path,$(LOCAL_PATH)/../../cocos2d)$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/external)$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos)LOCAL_MODULE := cocos2dcpp_sharedLOCAL_MODULE_FILENAME := libcocos2dcpp#widcard為擴充萬用字元#遍曆目錄和子目錄define walk $(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e)))endef#遍曆路徑Classes下得目錄和子目錄檔案,並存入ALLFILES變數中ALLFILES = $(call walk, $(LOCAL_PATH)/../../Classes)#從ALLFILES目錄中提取檔案,並存入FILE_LIST中#.cc是Linux/Unix下為C++源檔案的預設副檔名,與.cpp一個意思#.c 因為我要用到sqlite3.c  FILE_LIST := hellocpp/main.cppFILE_LIST += $(filter %.cpp, $(ALLFILES))FILE_LIST += $(filter %.c, $(ALLFILES))FILE_LIST += $(filter %.cc, $(ALLFILES))#搜尋Classes下的子目錄檔案FILE_INCLUDES += $(shell find $(LOCAL_PATH)/../../Classes -type d)#根據搜尋到的檔案名稱 編譯資源檔LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)#提供搜尋檔案的路徑LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes $(FILE_INCLUDES) #靜態庫LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_staticLOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static#LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static#LOCAL_WHOLE_STATIC_LIBRARIES += cocosbuilder_static#LOCAL_WHOLE_STATIC_LIBRARIES += spine_staticLOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_staticLOCAL_WHOLE_STATIC_LIBRARIES += cocos_network_staticLOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static#編譯動態庫include $(BUILD_SHARED_LIBRARY)#匯入靜態庫對應的模組$(call import-module,.)$(call import-module,audio/android)#$(call import-module,Box2D)#$(call import-module,editor-support/cocosbuilder)#$(call import-module,editor-support/spine)$(call import-module,editor-support/cocostudio)$(call import-module,network)$(call import-module,extensions)


吐槽:這些零碎的東西應該是被引擎或者開發軟體所解決的。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.