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修改的更多相关文章

  1. cocos:C++ 导出到lua, cocos2dx_extension.ini修改

    cocos:C++ 导出到lua, cocos2dx_extension.ini修改 [zq] //zq section, 需要和genbindings.py中的配置相同 # the prefix t ...

  2. cocos执行tolua/genbindings.py文件,错误搜集:

    1.PYTHON_BIN not defined, use current python.这个不是错误 2.llvm toolchain not found!path: /Users/staff/Do ...

  3. cocos进阶教程(1)Lua调用自定义C++类和函数的最佳实践

    第一层:纯C环境下,把C函数注册进Lua环境 a.lua 文件 )) a.c 文件 #include <lua.h> #include <lualib.h> #include ...

  4. c++对象导出到lua

    转自:http://www.cnblogs.com/ringofthec/archive/2010/10/26/luabindobj.html 虽然有tolua++, luabind等等, 不过自己手 ...

  5. hiredis异步接口封装并导出到Lua

    hiredis异步接口封装并导出到Lua(金庆的专栏 2017.1)hiredis 不支持 Windows, Windows 下使用 wasppdotorg / hiredis-for-windows ...

  6. cocos2d-x中CCEditbox导出到lua

    自从工作后感觉时间较少(每天工作9-22,晚上就不想动了,早上想多睡点),工作中用的是 cocos2d-x.cocos2d-x是一款手机游戏引擎,虽然支持lua,但和love2d相比非纯lua游戏引 ...

  7. cocos studio UI 1.6.0.0 修改导出项目路径

    因为cocos studio UI 1.6.0.0版本没有自动修改默认导出路径的功能,新建项目后默认导出的路径还是上一个项目的,每次导出都要重新设置路径很麻烦.于是考虑是否可以找到默认配置文件,终于还 ...

  8. 学习cocos code ide 的lua编程

    装上了cocos code ide,配了路径之后,建立一个默认lua工程,发现无法调试,报错. 问了别人,在cocos2dconstants.lua的613行插入cc.AsyncTaskPool  = ...

  9. Cocos Code IDE新建lua工程报错解决方案

    今天想用cocos code IDE新建一个工程,但是控制台报错:Read json file null failed, the reason is:null.我下载的是官方3.5源码,sdk,ndk ...

随机推荐

  1. [转] Nginx配置中的location、root、alias

    Nginx配置中的location.root.alias location & root 初始配置 [root@adailinux vhost]# cat rio.conf server { ...

  2. android 入门开发

    本示例讲解的是基本点有 1.使用SQLite数据库 2.对数据的新增,查询. 3.利用ViewActivity进行数据的呈现 代码是参考了网上各种代码,刚开始写,肯定有一些地方是有问题,我对JAVA代 ...

  3. Huawei LiteOS简介

    Huawei LiteOS简介 Huawei LiteOS是华为面向物联网领域开发的一个基于实时内核的轻量级操作系统.本项目属于华为物联网操作系统Huawei LiteOS源码,现有基础内核支持任务管 ...

  4. C#常用集合类的实现以及基本操作复杂度

    List 集合类是顺序线性表,Add操作是O(1)或是O(n)的,由于List的容量是动态扩容的,在未扩容之前,其Add操作是O(1),而在需要扩容的时候,会拷贝已存在的那些元素同时添加新的元素,此时 ...

  5. c语言-数组、指针面试题

    转载 说明:所有题目均摘录于网络以及我所见过的面试题目,欢迎补充! 无特殊说明情况下,下面所有题s目都是linux下的32位C程序. 先来几个简单的热热身. 1.计算以下sizeof的值. char ...

  6. flink dataset join笔记

    1.dataset的join连接,通过key进行关联,一般情况下的join都是inner join,类似sql里的inner join key包括以下几种情况: a key expression a ...

  7. MySQL 重要参数 innodb_flush_log_at_trx_commit 和 sync_binlog

    innodb_flush_log_at_trx_commit 主要控制了innodb将log buffer中的数据写入日志文件并flush磁盘的时间点,取值分别为0.1.2三个.该参数控制重做日志写入 ...

  8. cmake设定boost python3

    在mac上操作的.python3是anaconda环境下装的,3.7.1. boost是用brew装的,1.71.0版本. 按照FindBoost.cmake官方写法的CMakeLists.txt: ...

  9. k8s krew 插件管理工具

    参考:https://github.com/kubernetes-sigs/krew https://int32bit.me/2019/12/05/%E5%88%86%E4%BA%AB%E5%87%A ...

  10. 《linux就该这么学》课堂笔记15 vsftpd文件传输、Samba/NFS文件共享

    1.为了能够在如此复杂多样的设备之间(Windows.Linux.UNIX.Mac等不同的操作系统)解决问题解决文件传输问题,文件传输协议(FTP)应运而生. FTP服务器是按照FTP协议在互联网上提 ...