第一部分:配置安裝環境
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