cocos:C++ 导出到lua, genbindings.py修改
cocos:C++ 导出到lua, genbindings.py修改
1. 准备
把tools目录下的cocos2dx_extension.ini, genbindings.py, userconf.ini拷贝到
一个新的目录下,作为修改模板
2. 修改genbindings.py -> build.py
2.1
NDK_ROOT = "/Users/staff/Documents/worksoft/android-ndk-r9"
必须是r9的不能用最新的r10
2.2 三个目录,都是绝对路径
1、 工程目录,根据自己的实际情况获取
project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
2. cocos_root 目录,也就是cococ2dx所在的目录
cocos_root = os.path.abspath(os.path.join(project_root, '../cocos2dx'))
3. cxx_generator_root目录,tools/bindings-generator目录,也就是generator.py所在目录,tolua的工具路径
cxx_generator_root = os.path.abspath(os.path.join(project_root, 'tools/bindings-generator'))
2.3 保存设置到userconf.ini文件,所以这个文件不需要拷贝
保存的配置信息都是上面获取,基本保持和genbindings.py一样,这里值添加了一个zqdir目录,也就是我们的工程目录,这里的配置是在cocos2dx_extension.ini这样的配置文件中使用的
# save config to file
config = ConfigParser.ConfigParser()
config.set('DEFAULT', 'androidndkdir', ndk_root)
config.set('DEFAULT', 'clangllvmdir', llvm_path)
config.set('DEFAULT', 'cocosdir', cocos_root)
config.set('DEFAULT', 'cxxgeneratordir', cxx_generator_root)
config.set('DEFAULT', "zqdir", project_root)
config.set('DEFAULT', 'extra_flags', '')
conf_ini_file = os.path.abspath(os.path.join(os.path.dirname(__file__), 'userconf.ini'))
print 'generating userconf.ini...'
with open(conf_ini_file, 'w') as configfile:
config.write(configfile)
2.4 两个目录,都是绝对路径
1. tolua_root类似于tools/tolua目录,也就是cocos2dx_extension.ini文件所在目录
tolua_root = '%s/auto_build' % project_root
2. output_dir 输出目录,也就生成的.h 和 .cpp文件的目录
output_dir = '%s/bindings' % project_root
2.5 cmd_args 配置
//zq.ini配置文件名
//'zq' -s SECTION sets a specific section to be converted, 我们知道ini的配置文件都需要有section,每个section下面有很多配置项,这里对应zq.ini中的[zq] section,zq.ini中
>>[zq] //zq section
>>the prefix to be added to the generated functions. You might or might not
>>use this in your own
>>templates
>>prefix = zq
//lua_zq_auto 生成的.h 和 .cpp文件名
cmd_args = {
'zq.ini': ('zq', 'lua_zq_auto')
}
//下面这些没有改动
target = 'lua' //生成目标
//generator.py文件
generator_py = '%s/generator.py' % cxx_generator_root
//循环生成
for key in cmd_args.keys():
args = cmd_args[key]
cfg = '%s/%s' % (tolua_root, key) //配置文件zq.ini文件
print 'Generating bindings for %s...' % (key[:-4])
//执行generator.py [options] {configfile} 命令
//generator.py --help
// Usage: generator.py [options] {configfile}
// Options:
// -h, --help show this help message and exit
// -s SECTION sets a specific section to be converted
// -t TARGET specifies the target vm. Will search for TARGET.yaml
// -o OUTDIR specifies the output directory for generated C++ code
// -n OUT_FILE specifcies the name of the output file, defaults to the prefix
in the .ini file
command = '%s %s %s -s %s -t %s -o %s -n %s' % (python_bin, generator_py, cfg, args[0], target, output_dir, args[1])
_run_cmd(command)
cocos:C++ 导出到lua, genbindings.py修改的更多相关文章
- cocos:C++ 导出到lua, cocos2dx_extension.ini修改
cocos:C++ 导出到lua, cocos2dx_extension.ini修改 [zq] //zq section, 需要和genbindings.py中的配置相同 # the prefix t ...
- cocos执行tolua/genbindings.py文件,错误搜集:
1.PYTHON_BIN not defined, use current python.这个不是错误 2.llvm toolchain not found!path: /Users/staff/Do ...
- cocos进阶教程(1)Lua调用自定义C++类和函数的最佳实践
第一层:纯C环境下,把C函数注册进Lua环境 a.lua 文件 )) a.c 文件 #include <lua.h> #include <lualib.h> #include ...
- c++对象导出到lua
转自:http://www.cnblogs.com/ringofthec/archive/2010/10/26/luabindobj.html 虽然有tolua++, luabind等等, 不过自己手 ...
- hiredis异步接口封装并导出到Lua
hiredis异步接口封装并导出到Lua(金庆的专栏 2017.1)hiredis 不支持 Windows, Windows 下使用 wasppdotorg / hiredis-for-windows ...
- cocos2d-x中CCEditbox导出到lua
自从工作后感觉时间较少(每天工作9-22,晚上就不想动了,早上想多睡点),工作中用的是 cocos2d-x.cocos2d-x是一款手机游戏引擎,虽然支持lua,但和love2d相比非纯lua游戏引 ...
- cocos studio UI 1.6.0.0 修改导出项目路径
因为cocos studio UI 1.6.0.0版本没有自动修改默认导出路径的功能,新建项目后默认导出的路径还是上一个项目的,每次导出都要重新设置路径很麻烦.于是考虑是否可以找到默认配置文件,终于还 ...
- 学习cocos code ide 的lua编程
装上了cocos code ide,配了路径之后,建立一个默认lua工程,发现无法调试,报错. 问了别人,在cocos2dconstants.lua的613行插入cc.AsyncTaskPool = ...
- Cocos Code IDE新建lua工程报错解决方案
今天想用cocos code IDE新建一个工程,但是控制台报错:Read json file null failed, the reason is:null.我下载的是官方3.5源码,sdk,ndk ...
随机推荐
- golang--生成某区间的随机数
import ( "crypto/rand" "fmt" "math" "math/big" ) func main() ...
- Postman安装使用
下载链接:https://www.getpostman.com/downloads/ 选择下载的版本 postman基础功能介绍 collection在postman里面相当于一个文件夹,可以把同一个 ...
- 【05】C#特有的ref、out参数
java和C#非常相似,它们大部分的语法是一样的,但尽管如此,也有一些地方是不同的. 为了更好地学习java或C#,有必要分清它们两者到底在哪里不同. 我们这次要来探讨C#特有的ref.out参数. ...
- 为什么改了JS数组中的一个元素的值,其他数组元素值都跟着变了
原因: 数组是引用类型,数组变量存储在栈,元素数据存储在堆中,将数组赋值不同的对象,所以的赋值对象都指向堆同一个数据,所以改变其中一个数组中的元素,别的数组元素也会改变. 解决方案: 原理就是先把数组 ...
- Java代码中可以优化性能的小细节
避免对boolean类型的判定 反例: 12 if("a".equles("a")==true)`{} 正例: 12 if(Objects.equles(&qu ...
- delphi实现窗体闪烁功能
delphi实现窗体闪烁功能 以前做窗口闪动时都没有考虑到让任务栏上的按钮闪动的问题, 现在一个客户需要任务栏按钮闪动,发现以前使用的flashwindow不能达到要求了, 查找了一下,找到flash ...
- 基础系列(1)-- html
(随笔杂谈,自己做的笔记) 网页的组成 结构 ------ xhtml,xml 表现 ------ css 行为 ------ bom,dom,ECMAScript html5结构 < ...
- docker部署zabbix
我相信大家都已经会再物理机上跑zabbix并且监控了,那么有没有想过在docker中跑zabbix?下面咱们来看看如何在docker中搭建zabbix并且监控 部署环境 2台物理机机器: zabbix ...
- Odoo视图的共有标签
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826405.html 1)name (必选) 通过name值,查找标签 2)model 与view相关联的 ...
- TCP 通信时序及状态变迁
TCP 通信时序及状态变迁 参考链接: https://www.cnblogs.com/boxker/p/11214886.html https://blog.csdn.net/miss_ruoche ...