標籤:
NDK系統參數詳解:
LOCAL_PATH := $(call my-dir)
指定LOCAL_PATH變數,用於尋找源檔案,上面的語句的意思是將LOCAL_PATH變數定義成當前檔案所在目錄路徑, my-dir是編譯系統提供的宏函數,被用來擷取當前的目錄。
$(call import-add-path,$(LOCAL_PATH)/../../../../)
import-add-path用來添加路徑到 NDK_MODULE_PATH 環境變數中。
include $(CLEAR_VARS)
CLEAR_VARS由編譯系統提供,指定讓GNU MAKEFILE為你清除除LOCAL_PATH以外的所有LOCAL_XXX變數,如LOCAL_MODULE,LOCAL_SRC_FILES,LOCAL_SHARED_LIBRARIES等. 一個Android.mk中可以定義多個編譯模組,每個編譯模組都是以include $(CLEAR_VARS)開始,以include $(BUILD_XXX)結束。
LOCAL_MODULE := cocos2dcpp_shared
每一個android.mk檔案中都必須定義一個模組標示 LOCAL_MODULE , 這個名字必須是唯一的並且不包含任何的空格,編譯系統將自動的修改組建檔案的首碼和尾碼,如一個模組為foo共用庫將被改為libfoo.so,如果你的模組名為libfoo,編譯系統產生的檔案為 libfoo.so, 而不會去再增加首碼,當你使用的時候,android平台會自動識別
LOCAL_MODULE_FILENAME := libcocos2dcpp
LOCAL_MODULE_FILENAME指定模組檔案名稱
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/HelloWorldScene.cpp
LOCAL_SRC_FILES指定本模組的c/c++源檔案(.c .cpp .cc),各檔案之間以空格分隔,\為續行符。
LOCAL_CPP_EXTENSION := .cc .cpp
預設的c++副檔名是.cpp, LOCAL_CPP_EXTENSION可以用來指定不同類型的副檔名,不要忘了前面的點
LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../Classes
LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../Classes/Game
LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../Classes/Lobby
LOCAL_C_INCLUDES參數指定本模組包含的標頭檔路徑,多個路徑之間以空格分隔
LOCAL_WHOLE_STATIC_LIBRARIES += cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_WHOLE_STATIC_LIBRARIES參數用來指定本模組依賴的所有靜態庫模組(串連靜態串連庫的時候不會移除"daed code",何謂dead code呢,就是調用者模組永遠都不會用到的程式碼片段和變數)
LOCAL_STATIC_LIBRARIES += cocos2dx_static
LOCAL_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_ STATIC_LIBRARIES參數用來指定本模組依賴的所有靜態庫模組(串連靜態串連庫的時候會移除"daed code",何謂dead code呢,就是調用者模組永遠都不會用到的程式碼片段和變數)
include $(BUILD_STATIC_LIBRARY) 表示編譯成靜態庫。
include $(BUILD_SHARED_LIBRARY) 表示編譯成動態庫(即共用庫)。
include $(BUILD_EXECUTABLE) 表示編譯成可執行程式。
include $(PREBUILT_STATIC_LIBRARY) 表示定義一個先行編譯好的靜態庫模組。
include $(PREBUILT_SHARED_LIBRARY) 表示定義一個先行編譯好的動態庫模組。
$(call import-module,cocos2dx)匯入外部模組(此處表示匯入cocos2dx模組,cocos2dx為模組名LOCAL_MODULE,注意該命令搜尋外部模組的路徑在NDK_MODULE_PATH中指定或通過$(call import-add-path,$(LOCAL_PATH)/../../)命令匯入)。
編寫先行編譯靜態庫Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libxml2_static
LOCAL_SRC_FILES := $(LOCAL_PATH)/lib/android/libxml2.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_STATIC_LIBRARY)
編寫先行編譯動態庫Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libYvImSdk
LOCAL_SRC_FILES := $(LOCAL_PATH)/libs/$(TARGET_ARCH_ABI)/libYvImSdk.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
AndroidNDK學習筆記