cxx-generator 是由 Zynga 工程師貢獻(xiàn)的 C++ 代碼綁定到 js 工具。用于將 cocos2d-x 的 c++ 代碼,生成相應(yīng)的 js 綁定代碼(由 c++ 寫成),然后將這些函數(shù)注冊(cè)到 spidermonkey 的解釋器中。通過將 js 代碼映射成 c++ 代碼,就可以使用相應(yīng)的 js 接口了。
所需要的環(huán)境
mac os x 系統(tǒng)
python2.7
py-yaml
cheetah (for target language templates)
libclang, from clang 3.1
前三個(gè)可以通過 macports 自動(dòng)安裝
macports 下載地址
http://www.macports.org/install.php
注意選擇適合你的系統(tǒng)版本,另外該頁也注明了安裝中常見的系統(tǒng)問題,一共四條。
在安裝 macports 時(shí),有可能會(huì)卡在最后一分鐘,那么需要重啟后斷網(wǎng)安裝即可。
在終端上運(yùn)行此命令,安裝前三個(gè)軟件
sudo port install python27 py27-yaml py27-cheetah
安裝對(duì)網(wǎng)絡(luò)有一定要求,部分地區(qū)可能要自備梯子
下載clang
http://llvm.org/releases/3.1/clang+llvm-3.1-x86_64-apple-darwin11.tar.gz
下載NDK
綁定例子中,用到了部分 c++ 標(biāo)準(zhǔn)庫接口,所以需要提供相應(yīng)代碼實(shí)現(xiàn),工具中,采用 ndk 實(shí)現(xiàn)。不太明白為什么沒有直接用 xcode 中的標(biāo)準(zhǔn)庫。
http://dl.google.com/android/ndk/android-ndk-r8d-darwin-x86.tar.bz2
復(fù)制 userconf.ini.sample 和 user.cfg.sample 并去掉 sample 后綴
添加自己的路徑,我的是多系統(tǒng)所以路徑有點(diǎn)特別
//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
最后,由終端運(yùn)行
sudo ./test.sh
生成 simple_test_bindings 文件夾,下面就是綁定好的 c++ 代碼了。
懶省事直接拿 TestJavaScript 例子開刀,倒入兩個(gè)文件夾 simple_test 和 simple_test_bindings
在 AppDelegate.cpp 中,倒入頭文件
#include "autogentestbindings.hpp"
并注冊(cè)
sc->addRegisterCallback(register_all_autogentestbindings);
在 tests-boot-jsb.js 中,添加測(cè)試代碼
var myClass=new ts.SimpleNativeClass();
var myStr=myClass.returnsACString();
cc.log(myStr);
控制臺(tái)輸出
this is a c-string
參考文獻(xiàn)
https://github.com/funkaster/cxx-generator
http://www.macports.org/install.php