自定义路径创建Cocos2d-x项目

本文介绍windows下面如何优雅的创建Cocos2d-x项目。为何称之为优雅,是因为现在网上流传的一些创建方法有一些问题。大致内容如下:

l 使用VS向导创建Cocos2d-x项目(废弃,不建议使用)

l 使用create_project.py

n 问题1:工程名等替换不完全

n 问题2:创建项目不能指定路径

使用VS向导创建Cocos2d-x项目(废弃,不建议使用)

在Cocos2d-x 2.1.3及之前,官方使用“install-template-msvc.bat”文件,安装VS创建Cocos2d-x项目向导,然后可以按照向导创建Cocos2d-x项目。注意默认情况下,新建项目的存放的位置应该设置在Cocos2d-x引擎的安装目录下面,否则可能因为找不到库文件而不能通过编译。不过可以在设置项目属性,头文件和库文件的搜索路径来解决。可以参考我之前的一篇博文《C++静态库与动态库》,里面介绍如何设置vs项目属性使用静态库和动态库。

在Cocos2d-x 2.1.4,官方建议使用“create_project.py”来创建Cocos2d-x项目,并将在版本废弃了“install-template-msvc.bat”。

“We recommend you use multi-platform creating tools named create_project.py, which lies in tools/project-creator, to create a new project. This tool can create a project has the same folder structure as HelloCpp. Other tools such as create-android-project.sh will be removed in future.

Note: VS template was deprecated in this release, please use 'tools/project-creator' instead.

——来自官网:http://goo.gl/yVAjMr

我入手Cocos2d-x的时候,刚发布Cocos2d-x 2.1.4,就被这个坑了。Cocos2d-x 2.1.4废弃了“install-template-msvc.bat”,但是下载压缩包里面又有,可恶的是不能用的,各种报错。同时网上流传的就是使用这种方法,让我绕了不少路。

使用create_project.py

create_project.py(cocos2d-x/tools/project-creator/目录下)使用方法比较简单:

Usage: create_project.py -project PROJECT_NAME -package PACKAGE_NAME -language PROGRAMING_LANGUAGE

Options:

-project PROJECT_NAME】Project name, for example: MyGame

【-package PACKAGE_NAME】Package name, for example: com.MyCompany.MyAwesomeGame

【-language PROGRAMING_LANGUAGE】Major programing lanauge you want to used, should be [cpp | lua | javascript]

Sample 1: ./create_project.py -project MyGame -package com.MyCompany.AwesomeGame

Sample 2: ./create_project.py -project MyGame -package com.MyCompany.AwesomeGame –language javascript

注意:

l 官方建议python使用2.7.3

l 安装python之后需要设置环境变量,或者使用该脚本时指定python路径,如C:\python27\python.exe create_project.py …

使用该方法创建项目之后,项目位于cocos2d-x/projects目录下面。windows平台进入proj.win32,打开工程文件即可。

使用create_project.py创建项目的原理,即简单地将cocos2d-x\template目录下的三种语言模板multi-platform-cpp、multi-platform-lua、multi-platform-js复制到对应的新建工程目录下,然后用PROJECT_NAME、PACKAGE_NAME替换模板中的HelloCpp/ HelloLua/ HelloJavascript。

问题1:工程名等替换不完全

下面是我用towergame做为工程名创建的lua项目,目录如下:

虽然可以正常编译,但发现工程名未替换为towergame,这比较坑爹。一位日本开发者lettas已经有人提交了修复请求https://github.com/cocos2d/cocos2d-x/pull/3943,不过正式发布的版本中还没有修改。急着用可以去github checkout下来用。

问题2:创建项目不能指定路径

使用create_project.py不能自定义路径,必须放在cocos2d-x/projects目录下面,这个设定我认为非常不合理!这样将自己的项目放到cocos2d-x引擎目录中,不方便管理,即库与项目耦合到一起了,如果cocos2d-x升级也不方便。

比较合理的方案是:

l cocos2d-x独立安装,这样对cocos2d-x升级也相对简单。

l 新建cocos2d-x项目独立于cocos2d-x安装路径。通过设置搜索或引用路径,让项目能够找到cocos2d-x安装路径。

幸运的是,完全可以做到这样。熟悉VS的同学应该知道,VS工程设置是支持环境变量的。通过下面的一些改造,可以让新建的cocos2d-x项目独立于cocos2d-x引擎目录:

1) 将通过create_project.py创建的项目剪切到你希望放置的目录;

2) 创建环境变量COCOS2DX_HOME,指向cocos2d-x安装目录;

3) 将*.sln文件使用文本方式打开,将里面的所有相对路径“..\..\..”都替换为环境变量%COCOS2DX_HOME%,如“..\..\..\cocos2dx\proj.win32\cocos2d.vcxproj”替换为“%COCOS2DX_HOME%\cocos2dx\proj.win32\cocos2d.vcxproj”;

4) 将*.vcxproj文件使用文本方式打开,将里面debug、release 2种模式下<AdditionalIncludeDirectories>节点定义的引用路径中包含”$(ProjectDir)..\..\..\”都替换为环境变量“$(COCOS2DX_HOME)\”;注意这里使用环境变量的方式与*.sln中不一样,是$(COCOS2DX_HOME)而非%COCOS2DX_HOME%

至此,大工告成!看下面的运行起来的vs工程:

图中依赖的工程跟将新建的项目放在cocos2d-x/projects目录下面一样可以链接到。

上面的替换工作可以用文本的查找替换功能,可以轻松搞定。但是为了能够与create_project.py集成,我提供下面一段代码能够自动替换.sln、.vcxproj文件中对于内容:

#!/usr/bin/python

#-*- encoding:utf-8 -*-

import sys, os

def checkOption():
argLen = len(sys.argv)
targetPath = "./"
if argLen == 2:
targetPath = sys.argv[1]
if not targetPath.endswith("/"):
targetPath += "/"
return targetPath

def replaceCocos2dxPath(path):
filelists = os.listdir(path)
for item in filelists:
suffix = (os.path.splitext(item))[1]
print(suffix)
if suffix == ".sln":
print('replace "..\..\..\" with %COCOS2DX_HOME% in *.sln')
#replace "..\..\..\" with %COCOS2DX_HOME% in *.sln
content = open(path + item, 'r').read().replace("..\\..\\..\\", "%COCOS2DX_HOME%\\")
file = open(path + item, 'w')
file.write(content)
file.close()
if suffix == ".vcxproj":
print('replace "$(ProjectDir)..\..\..\" with $(COCOS2DX_HOME)\ in *.vcxproj')
#replace "$(ProjectDir)..\..\..\" with $(COCOS2DX_HOME)\ in *.vcxproj
content = open(path + item, 'r').read().replace("$(ProjectDir)..\\..\\..\\", "$(COCOS2DX_HOME)\\")
file = open(path + item, 'w')
file.write(content)
file.close()

if __name__ == '__main__':
targetPath = checkOption()
replaceCocos2dxPath(targetPath)

本文转自吴秦博客园博客,原文链接:http://www.cnblogs.com/skynet/p/3428369.html,如需转载请自行联系原作者

自定义路径创建Cocos2d-x项目相关推荐

  1. android sqlite 自定义路径,SQLite数据库创建时自定义路径

    前言 在新建数据库sqlite的时候,我们已经知道了数据库默认路径为 /data/data/com.example.pei.textdemo/databases/test_demo.db 那么,如果我 ...

  2. android自定义sqlite路径,SQLite数据库创建时自定义路径

    前言 在新建数据库sqlite的时候,我们已经知道了数据库默认路径为/data/data/com.example.pei.textdemo/databases/test_demo.db 那么,如果我们 ...

  3. 仿vue的前端自定义cmd命令拉取项目脚手架

    原文地址:https://github.com/screetBloo... 含纯node或者commander实现自己的前端脚手架 文章码字分享不易,希望如果帮到您的话,帮忙github点个star ...

  4. 创建一个Servlet项目流程(入门)

    版本 IDEA 2020.2 JDK1.8 apache-tomcat-9.0.36 项目流程 一.IDEA中新建JaveEE项目 项目起名,选择项目存放地址,点击finish创建成功 进入项目后,右 ...

  5. 创建一个SpringBoot项目

    Spring的诞生是为了简化JAVA程序的开发的 快速开发Spring而诞生的 SpringBoot为了快速开发Spring而诞生的一个框架 1)什么是SpringBoot?为什么要学它?(重要) S ...

  6. python pyqt eric_使用eric创建一个PyQt项目

    更多 在上一篇文章中,我们已经把eric安装配置完毕,本文将继续这一话题,介绍如何使用eric创建一个PyQt项目.在这个项目中,我们实现了两个能够修改标签文字的按钮和一个可以关闭对话框的按钮. 1. ...

  7. 给 vite 创建的 Vue3 项目配置 ESLint

    目录 前言 一.下载安装相关的依赖包 二.配置 .eslintrc.js 1.重点成员解析 (1).parserOptions 2..eslintrc.js 配置案例 三.配置 .eslintigno ...

  8. 使用Netbeans创建java Web项目

     使用Netbeans创建java Web项目 需要先搭建JDK参考: Java开发环境的搭建以及使用eclipse创建项目 Linux环境安装卸载JDK 1.安装Tomcat 去官网下载最新的T ...

  9. MyEclipse教程:Web开发——创建Web片段项目

    MyEclipse 在线订购年终抄底促销!火爆开抢>> MyEclipse最新版下载 本教程向用户展示了使用关联的Web项目创建Web片段项目的机制. 用户还可以获得要检查的示例项目. 在 ...

最新文章

  1. 简单的特征值梯度剪枝,CPU和ARM上带来4-5倍的训练加速 | ECCV 2020
  2. ebs 供应商地点信息_实探荣耀办公地:与高通接近达成合作,加快供应商整合脚步...
  3. 打开MSN提示Windows Live Communication Platform遇到问题需要关闭错误的解决方法
  4. Objective-C 语法
  5. java注解和反射学习
  6. Must-read papers on deep learning to hash
  7. Java基础---继承
  8. java三角函数计算器_编程实现一个科学计算器,能够实现加减乘除,三角函数计算等。用户界面自己设计...
  9. Excel导入导出SQL server数据库
  10. excel wind插件使用_这些超实用的Excel插件,你要是都知道,确定老司机无疑了
  11. 说下我自己对空号检测的理解跟心得
  12. java开发特殊技能怎么填_【程序员简历】IT技能/编程技能应当怎么写?
  13. MySQL 数据对比
  14. Python爬虫学习笔记-第二十七课(MongoDB下)
  15. 百度云盘超4G大文件上传不了怎么办?
  16. 哪些是性价比高的骨传导蓝牙耳机,五款骨传导蓝牙耳机推荐
  17. CSDN文章自动展开全文无需登录插件(仅限Chrome)!
  18. CLEval: Character-Level Evaluation for Text Detection and Recognition Task 论文阅读
  19. GD32F3x0 USB CDC应用案例
  20. 微信公众号怎么生成能追踪效果的二维码?

热门文章

  1. python - Flask 基础(1)
  2. 主流数据库连接池性能比较 hikari druid c3p0 dbcp jdbc
  3. MySQL的UNIQUE KEY对数据中字母的大小写不敏感
  4. swift-自定义无限轮播图
  5. AWK处理日志入门(转)
  6. 生成一定数量的不重复随机数
  7. NSS_08 extjs表单验证
  8. 数据结构笔记(二十九)--最小生成树(prim算法思想)
  9. 排序系统 c语言程序设计,c语言程序设计(排序算法).doc
  10. OpenCV图像处理(18)——文件夹下所有图像转灰度(14-15综合)