SpiderMonkey是Mozilla Firefox浏览器的JavaScript引擎,用C/C++语言编写。最近借着使用Cocos2d-x的机会,学习了一下如何把SpiderMonkey嵌入到C++项目中以便给项目添加JS脚本执行能力。写点东西把自己学到的知识总结一下,也希望能帮到一些人 :)先从搭建环境开始:
1)新建一个空白的Single View应用
打开Xcode(4.6)的“Welcome to Xcode”窗口,点击“Create a new Xcode project”按钮:
选择iOS->Application->Single View Application,然后点Next:
填上各种信息,然后点Next:
接下来选择保存路径,点Next,这样一个新工程就诞生了:
2)拷贝JSAPI头文件和SpiderMonkey静态链接库
可以按照
SpiderMonkey Build Documentation自己编译一份静态链接库,不过从Cocos2d-x里拷贝一份预先编译好的更容易一点。SpiderMonkey相关的头文件和静态链接库位于:Cocos2d-x(我用的是cocos2d-2.0-x-2.0.4)/scripting/javascript/spidermonkey-ios:
把spidermonkey-ios文件夹拷贝到刚刚创建好的工程里:
3)添加SpiderMonkey静态链接库
选中 TARGETS -> SpiderMonkeyTest -> Build Phases -> Link Binary With Libraries,点击 +
点击 Add Other... 按钮:
找到并且选中libjs_static.a然后点Open按钮:
这样SpiderMonkey的静态链接库就加好了:
4)添加zlib库
SpiderMonkey依赖zlib库,因此需要配置一下:
选中 TARGETS -> SpiderMonkeyTest -> Build Phases -> Link Binary With Libraries,点击 +
选中libz.dylib,添加Add按钮
这样,zlib库也添加好了:
5)把JSAPI头文件添加到搜索路径中
选中 TARGETS -> SpiderMonkeyTest -> BuildSettings -> Search Paths ->Header Search Path
双击右边的空白处,在弹出框左下角点加号,然后填上: "$(SRCROOT)/spidermonkey-ios/include"
6)把.m文件后缀改成.mm
为了在Objective-C代码里测试C++代码,需要把.m后缀改成.mm
7)JSAPI Hello World
从
JSAPI User Guide中拷贝测试代码到ViewController.mm里,把main方法改成test:
运行项目,一切正常:
好了,一个SpiderMonkey的测试环境就搭建完必了,接下来可以做各种试验了。