修改cocos2d-x项目创建器,支持自定义项目路径
问题
cocos2d-x目前的项目生成使用的是tools/project-creator/create_project.py
命令。这个命令生成的项目,默认处于cocos2d-x的projects文件夹中。
我当然不希望自己的项目处于 cocos2d-x的目录结构中文件夹中,这样不方便管理。
尝试解决
我首先想到的是使用 mklink
来解决,让 projects中的项目文件夹是我自己的项目文件夹的一个 symbol link。 mklink
是 WIN7自带的一个命令,必须在管理员模式下运行。
但这个方法有个问题,让我们来看看模版文件:[cocos2d-x]\template\multi-platform-cpp\proj.win32\HelloCpp.sln
......
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcocos2d", "..\..\..\cocos2dx\proj.win32\cocos2d.vcxproj", "{98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}"
......
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libCocosDenshion", "..\..\..\CocosDenshion\proj.win32\CocosDenshion.vcxproj", "{F8EDD7FA-9A51-4E80-BAEB-860825D2EAC6}"
......
Virtual Studio项目解决方案中对于其他项目的引用,采用的是相对路径,如果我在symbol link 的文件夹中打开这个项目,当然没有问题。但是如果我在自己的项目文件夹中打开这个项目,这个相对路径引用就会出错。
我想到的另一个解决方案就是使用环境变量。
我定义了一个 COCOS2DX_HOME 环境变量,指向我本机的cocos2d-x的安装目录:d:\cocos2dx\2.1.4
,然后在解决方案(.sln)文件中将相对路径修改成这样:
......
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcocos2d", "$(COCOS2DX_HOME)\cocos2dx\proj.win32\cocos2d.vcxproj", "{98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}"
......
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libCocosDenshion", "$(COCOS2DX_HOME)\CocosDenshion\proj.win32\CocosDenshion.vcxproj", "{F8EDD7FA-9A51-4E80-BAEB-860825D2EAC6}"
......
但在打开这个解决方案的时候,Virtual Studio报错如下:
项目文件 "d:\works\projects\test\proj.win32\$(COCOS2DX_HOME)\CocosDenshion\proj.win32\CocosDenshion.vcxproj" 已被移动、重命名或不在您的计算机上
这说明解决方案并不支持环境变量。
根据dualface的留言,原来解决方案是支持环境变量的,使用 %COCOS2DX_HOME%
这种语法即可。
最终解决
目前的解决方案,就是修改创建项目脚本,使其支持自定义项目文件夹,并在生成的时候自动替换解决方案(*.sln)中引用目录为绝对路径。当然,也可以替换成环境变量。
当然,还有项目文件(*.vcxproj)中的一部分引用,这个引用是支持环境变量的。
这就需要修改 [cocos2dx]\tools\project-creator\create_project.py
和[cocos2dx]\template\multi-platform-cpp\
。
我将它们按照原来的目录结构进行了整理,使其仅包含这两个修改过的文件夹。由于内容可能会经常修改,我在github 上建立了一个项目。
此项目基于 cocos2d-x 2.1.4。
使用方法
-
定义一个环境变量
COCOS2DX_HOME
,指向 cocos2d-x 安装目录。 -
使用github项目中的文件夹覆盖自己的cocos2d-x文件夹中的同名目录。用 OS X 的同学要小心点。
-
后面就看 Usage 吧:
Usage: create_project.py -project PROJECT_NAME -package PACKAGE_NAME -language PROGRAMING_LANGUAGE -path d:/works/projects/ 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] -path PROJECT_PATH The directory that project will create in, should be [ d:/works/projects/ | /home/zrong/projects/ ]
Sample 1: ./create_project.py -project MyGame -package com.MyCompany.AwesomeGame Sample 2: ./create_project.py -project MyGame -package com.MyCompany.AwesomeGame -language cpp -path d:/works/projects/
- 文章ID:1925
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/modify-cocos2d-x-create-project/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。