它可以生成相相應的C++的綁定文件和相相應的JS接口,屆時,你僅僅需要調用生成的相相應的JS接口,它將本身主動轉換成原來的C++的類。至關於直接調用原來的C++方法或者類。
B-G生成主要流程:
準備好必要的工具 -> 準備好你要綁定的C++的文件 -> 寫生成文件的.ini配置文件和.sh 腳本程序 -> 執行 .sh 腳本文件 -> 生成綁定文件 -> 測試綁定文件直至可以正常使用
必要的工具:
cocos2d-x引擎:http://cocos2d-x.org/projects/cocos2d-x/wiki/Download
python 2.7:http://www.python.org/download/ (眼下引擎裏面的bindings-generator僅僅支持python2.7版本號)
py-ymal: http://pyyaml.org/wiki/PyYAML (這是python的一個第三方包。下載頁有不一樣系統的安裝方式,可以參考。html
generator.py會調用到這個包。python
)
cheetah:http://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