cocos2d-x系列

NDK ?mk 語法2.0

一.?import-module的功能

導(dǎo)入外部模塊的.mk文件 ,和 include基本一樣。

概念上的區(qū)別是include導(dǎo)入的是由我們自己寫的.mk。而import-module導(dǎo)入的是外部庫、外部模塊提供的.mk。

用法上:include的路徑是.mk文件的絕對路徑。

而import是設(shè)置的路徑指定到模塊的.mk所在目錄,是相對于NDK_MODULE_PATH中的路徑列表的相對路徑。

import-module的使用

$(call import-module,相對路徑)

-----------------場景重現(xiàn)---------------------------

比如我的當(dāng)前模塊要調(diào)用 cocosdenshion模塊。

1.找到模塊名字和路徑

找到cocosdenshion模塊的android.mk的位置。F:\cocos2d-x\CocosDenshion\android\android.mk

打開看到:

LOCAL_MODULE := cocosdenshion_shared

...

include $(BUILD_STATIC_LIBRARY)

那么cocosdenshion模塊在我自己的android.mk中引用它是應(yīng)該叫它cocosdenshion_shared。而且他是個靜態(tài)庫。

2.在Android.mk中引用模塊

就像普通代碼中引用頭文件一樣。

在android.mk的最后一行調(diào)用

$(call import-module,CocosDenshion/android)

來導(dǎo)入模塊。

注意:我的NDK_MODULE_PATH=/cygdrive/f/cocos2d-x 是已經(jīng)設(shè)置好了的。

如果引用的模塊里面也有import-module,他的相對路徑也要加到NDK_MODULE_PATH中。如果它沒被加進(jìn)去的話。

然后

LOCAL_WHOLE_STATIC_LIBRARIES += cocos_jpeg_static

聲明我這模塊要引用該靜態(tài)庫模塊。

-------------------------------------------------------

二.import-module的使用注意

設(shè)置路徑時,注意與NDK_MODULE_PATH中的路徑相互配合。

1、導(dǎo)入模塊的.mk中如果也有import-module,則注意其相對路徑也要在NDK_MODULE_PATH中。

2、上面說了import-module和include一樣。如果import-module和Include包含了同一個.mk,會報重復(fù)包含的錯誤。

NDK_MODULE_PATH的配置

NDK_MODULE_PATH的作用

NDK_MODULE_PATH是一個很重要的變量,當(dāng)android.mk中使用了$(call import-module,XXX)函數(shù)引入外部庫文件時會用到,用以指示該往哪里去找這個文件。

如果NDK_MODULE_PATH 沒有設(shè)置或者設(shè)置不正確。編譯時都是報錯 Are you sure your NDK_MODULE_PATH variable is properly defined。

NDK_MODULE_PATH的設(shè)置與格式

NDK_MODULE_PATH 是一個環(huán)境變量,不是android.mk中設(shè)置的變量。

NDK_MODULE_PATH多個路徑用冒號分割。不是分號!且整個字符串中間不能有空格。格式不正確也會報錯上面的錯誤的。

設(shè)置NDK_MODULE_PATH的方法

1、在系統(tǒng)環(huán)境里手動添加這個環(huán)境變量,

2、在build_native.sh中 運行ndk-build之前使用export命令定義環(huán)境變量NDK_MODULE_PATH。

如:export NDK_MODULE_PATH=路徑1:路徑2:路徑3

3、直接將NDK_MODULE_PATH=路徑1:路徑2 加到 ndk-build命令的參數(shù)后面。ndk-build的參數(shù)最終會直接傳給make.

如:$NDK_ROOT_LOCAL/ndk-build -C $HELLOWORLD_ROOT NDK_MODULE_PATH=路徑1:路徑2

(命令 make aaa=213 //在編譯makefile之前將aaa當(dāng)作環(huán)境變量設(shè)置為213.)

4、還可以在android.mk中設(shè)置NDK_MODULE_PATH

在import語句之前加入,

$(call import-add-path,$(LOCAL_PATH)/platform/third_party/android/prebuilt)

將一個新的路徑加入NDK_MODULE_PATH變量。

NDK_MODULE_PATH的注意

感覺NDK_MODULE_PATH中路徑中有那些,自己一定要時刻清楚。路徑盡量設(shè)在模塊某個共同的根目錄下,不要舍得太亂,免得用起來亂。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容