AndroidNDK學習筆記

來源:互聯網
上載者:User

標籤:

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學習筆記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.