Cocos2d-x JSB 本身主動綁定bindings

Javascript Binding (簡稱JSB) 本身主動綁定教程。

Cocos2d-x JSB 本身主動綁定bindings-generator (如下簡稱B-G) 使用心得


假設想弄清深刻原理,推薦閱讀  Cocos2D-x從C++到JS的進階之路: http://blog.51cto.com/zt/560  

B-G 是什麼?
  當使用JSB的時候,假設你想要使用的C++的類或者方法沒有在已有JSB中被綁定,這時候。就可以使用B-G。

它可以生成相相應的C++的綁定文件和相相應的JS接口,屆時,你僅僅需要調用生成的相相應的JS接口,它將本身主動轉換成原來的C++的類。至關於直接調用原來的C++方法或者類。

B-G生成主要流程:
準備好必要的工具 -> 準備好你要綁定的C++的文件 -> 寫生成文件的.ini配置文件和.sh 腳本程序 -> 執行 .sh 腳本文件 -> 生成綁定文件 -> 測試綁定文件直至可以正常使用

必要的工具:
cocos2d-x引擎http://cocos2d-x.org/projects/cocos2d-x/wiki/Download
python 2.7http://www.python.org/download/   (眼下引擎裏面的bindings-generator僅僅支持python2.7版本號)
py-ymal: http://pyyaml.org/wiki/PyYAML  (這是python的一個第三方包。下載頁有不一樣系統的安裝方式,可以參考。html

generator.py會調用到這個包。python


cheetahhttp://www.cheetahtemplate.org/ (這也是python的一個第三方包,一個模板。generator.py會調用到這個包。安裝方式跟py-ymal一樣。)
libclang:http://llvm.org/releases/3.1/clang+llvm-3.1-x86_64-apple-darwin11.tar.gz (生成的時候需要用到的lib,注意master分支也就是2.2.2這個版本號的引擎用3.1的,develop分支也就是3.0版本號的引擎用3.3的)
Android NDK:http://dl.google.com/android/ndk/android-ndk-r8c-darwin-x86.tar.bz2 (測試的時候使用的v2.2.2用的r8c, 現在的3.0beta版需要用r9b)

.ini文件
參考樣例:cocos2dx引擎根文件夾/tools/bindings-generator/test/test.ini 
cocos2dx引擎根文件夾/tools/tojs/cocos2dx_extension.ini
cocos2dx引擎根文件夾/tools/tojs/cocos2dx.ini


.ini中部分參數的使用方法:
name: 單純僅僅是名稱。
prefix: 最後生成的文件都會以這個命名前綴,如 prefix.cpp, prefix.hpp, prefix_api.js 
classes: 你的所需轉換的類的名稱。必須是所導入的頭文件裏所有的類,這裏可以使用正則表達式來增長多個類,參考cocox2dx.ini。android


extra_arguments: 一些接口所需的系統參數。如clang包。android ndk包的引入所需的系統參數,寫法可以參照以上三個.ini。 
headers: 你所需要綁定的頭文件路徑。sql

 
target_namespace:命名空間。最後生成的JS文件的類。會以這個命名空間開頭。好比你的類爲sqlite。命名空間爲cocos2dx。那麼最後生成的就是cocos2dx.sqlite。api

 
rename_functions:可以將你要綁定的方法的名稱更改爲你所要的。可以更改多個。用逗號隔開,寫法參照 SqliteCpp::[sqlite3_execCpp=sqlite3_exec]。這個就是將SqliteCpp中的sqlite3_ execCpp方法重命名爲sqlite3_exec方法。
rename_classes :同上。重命名類。
skip :跳過你所不需要綁定的方法和類,因而就不生成。

.sh文件:主要調用程序。用來讀取.ini配置文件和寫部分參數。
參考樣例:cocos2dx引擎根文件夾/tools/tojs/genbindings.sh 
                    cocos2dx引擎根文件夾/tools/bindings-generator/test/test.sh

如下這句話便設定了經過調用generator.py來調用你的配置文件。並在你所設定的敵方生成你需要的綁定文件。app

 set -x LD_LIBRARY_PATH=${CLANG_ROOT}/lib $PYTHON_BIN ${CXX_GENERATOR_ROOT}/generator.py ${TO_JS_ROOT}/sqlite.ini -s sqlite -o ${TO_JS_ROOT}/sqliteBinding
寫好.ini和.sh後,在cmd執行 sudo 你的.sh路徑 。便可以在你配置的地方找到你生成的文件。python2.7

相關文章
相關標籤/搜索