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)

最近被Android.mk這東西折騰的一晚,這裏記錄一下。

ios就省心多了,不用管那麼多,xcode自己解決了。

文本工具:MACVIM(文本編輯工具 非常好用 能清楚分清tab 和空格,以免編寫.mk時出錯)

這個文件是向編譯器描述源代碼文件,便於它去解析。

以下是cocos2dx-3.2新建項目時生成的Android.mk文件

基本語法:

“#” 註釋

“:=”  賦值

“+=”  追加

“$”    引用某變量的值

如果文件少  直接在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_shared


LOCAL_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.cpp
FILE_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_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


#編譯動態庫
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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章