【cocos2d-x從c++到js】07:cxx-generator JS綁定工具
第一部分:配置安裝環境
cxx-generator是由Zynga工程師貢獻的C++代碼綁定到js工具。用于將cocos2d-x 的c++代碼,生成相應的js綁定代碼(由c++寫成),然后將這些函數注冊到spidermonkey的解釋器中。通過將js代碼映射成c++代碼,就可以使用相應的js接口了。
所需要的環境
mac os x系統
- python2.7
- py-yaml
- cheetah (for target language templates)
- libclang, from clang 3.1
前三個可以通過macports自動安裝
macports下載地址
http://www.macports.org/install.php
注意選擇適合你的系統版本,另外該頁也注明了安裝中常見的系統問題,一共四條。
在安裝macports時,有可能會卡在最后一分鐘,那么需要重啟后斷網安裝即可。
在終端上運行此命令,安裝前三個軟件
sudo port install python27 py27-yaml py27-cheetah
安裝對網絡有一定要求,部分地區可能要自備×××
下載clang
http://llvm.org/releases/3.1/clang+llvm-3.1-x86_64-apple-darwin11.tar.gz
下載NDK
綁定例子中,用到了部分c++標準庫接口,所以需要提供相應代碼實現,工具中,采用ndk實現。不太明白為什么沒有直接用xcode中的標準庫。
http://dl.google.com/android/ndk/android-ndk-r8d-darwin-x86.tar.bz2
第二步,生成綁定代碼
復制 userconf.ini.sample 和 user.cfg.sample 并去掉sample后綴
添加自己的路徑,我的是多系統所以路徑有點特別
//user.cfg
PYTHON_BIN=/opt/local/bin/python2.7
//userconf.ini
[DEFAULT]
androidndkdir=/Volumes/data/Mac_OS_X/android-ndk-r8b
clangllvmdir=/Volumes/data/Mac_OS_X/clang+llvm-3.1-x86_64-apple-darwin11
cxxgeneratordir=/Volumes/data/Workspace/cocos2d-2.1beta3-x-2.1.0/tools/cxx-generator
最后,由終端運行
sudo ./test.sh
生成simple_test_bindings文件夾,下面就是綁定好的c++代碼了。
第三步,集成測試
懶省事直接拿TestJavaScript例子開刀,倒入兩個文件夾simple_test和simple_test_bindings
在AppDelegate.cpp中,倒入頭文件
#include "autogentestbindings.hpp"
并注冊
sc->addRegisterCallback(register_all_autogentestbindings);
在tests-boot-jsb.js中,添加測試代碼
var myClass=new ts.SimpleNativeClass();
var myStr=myClass.returnsACString();
cc.log(myStr);
控制臺輸出
this is a c-string
參考文獻
https://github.com/funkaster/cxx-generator
http://www.macports.org/install.php
http://cn.cocos2d-x.org/bbs/forum.php?mod=viewthread&tid=10226&extra=page%3D1