Cocos2d-x JSB 自动绑定bindings

来源:互联网 发布:物流系统源码 编辑:程序博客网 时间:2024/05/20 17:42

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.7:http://www.python.org/download/   (目前引擎里面的bindings-generator只支持python2.7版本)
py-ymal: http://pyyaml.org/wiki/PyYAML  (这是python的一个第三方包,下载页有不同系统的安装方式,可以参考。generator.py会调用到这个包。)
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。
extra_arguments: 一些接口所需的系统参数。如clang包,android ndk包的引入所需的系统参数,写法可以参照以上三个.ini。 
headers: 你所需要绑定的头文件路径。 
target_namespace:命名空间。最后生成的JS文件的类,会以这个命名空间开头。例如你的类为sqlite,命名空间为cocos2dx,那么最后生成的就是cocos2dx.sqlite。 
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来调用你的配置文件,并在你所设定的敌方生成你需要的绑定文件。 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路径 ,便可以在你配置的地方找到你生成的文件。
0 0