为cocos2dx-3.x以上版本工程指定统一通用的引擎路径
2016-10-06 15:30
441 查看
<1>本人也是根据网友提供的一些资料进行测试及总结,新建工程后,务必运行一遍新项目,拷贝VS_Setting.py到项目proj.win32路径下,用编辑器打开VS_Setting.py文件,修改文件中以下变量,根据个人指定引擎的目录进行修改。修改完成后保存关闭文件,双击运行一遍VS_Setting.py,点击VS,出现以下第一个弹框,选“重新加载”,删除新建工程下的cocos引擎,重新生成该项目即可。(3.0rc0、3.2版本的安装引擎和项目自带引擎的目录结构不同,请务必复制一份项目自带引擎作为所有项目通用的引擎进行引用,且目录确定后不能进行变动,3.2以上引擎可以直接将cocos安装引擎作为通用引擎)
<2>注:除三个基本的外部工程外,如需要引用哪个新的外部工程就去cocos安装引擎下的debug中找到该外部工程的lib、dll文件,复制到项目下的pro.win32>>Debug.win32下,然后,项目>>属性>>链接器>>输入>>附加依赖项,加入该lib库的名字即可。
<3>项目移植android时,首先记得复制以下路径的这两个包放置于android工程的src,鼠标拖进去即可,将jni文件夹下的Android.mk文件中的路径改为指定引擎的绝对路径,勾选项目>>属性>>Builders>>CDT Builder,运行。
更改为:
<4>项目移植IOS时,在win32下,首先复制
IOS_Setting.py到项目的proj.ios_mac\项目名.xcodeproj\ 该路径下,双击运行即可,在Mac机对应版本引擎的projects目录记得放入一份创建项目时自带的引擎,该引擎位置指定为此目录,不能改变。
<5>下面贴出VS_Setting.py文件的代码
# -*- coding: utf-8 -*-
import os
import shutil
'''你需要自己把以cocos2dx1变量的值改为你自己实际的路径'''
cocos2dx1 = "D:\\cocos2d-x-3.6\\projects\\cocos2d"
cocos2dx2 = cocos2dx1+"\\cocos\\2d"
cocos2dx4 = "$(_COCOS_HEADER_WIN32_END);"
cocos2dx5 = cocos2dx1+"\\cocos\\editor-support;"
cocos2dx6 = cocos2dx1+"\\cocos;"
cocos2dx7 = cocos2dx1+"\\cocos\\platform;"
cocos2dx8 = cocos2dx1+"\\cocos\\platform\\desktop;"
cocos2dx9 = cocos2dx1+"\\external\\glfw3\\include\\win32;"
cocos2dx10 = cocos2dx1+"\\external\\win32-specific\\gles\\include\\OGLES;"
cocos2dx11 = cocos2dx1+"\\external\\freetype2\\include\\win32\\freetype2;"
cocos2dx12 = cocos2dx1+"\\external\\freetype2\\include\\win32\\"
cocos2dx13 ="$(_COCOS_LIB_WIN32_END);libcocos2d.lib"
PropsFile = ["cocos2d_headers.props", "cocos2dx.props"]
'''检查引擎版本'''
def correctbase():
global cocos2dx1
if os.path.isdir(cocos2dx1) == False:
print("correctbase() is error ")
return False
if cocos2dx1[len(cocos2dx1)-2] != os.sep:
cocos2dx1 += os.sep
file = ["cocos", "external"]
for name in file:
if os.path.isdir(cocos2dx1 + name) == False:
print("correctbase() is error ")
return False
return cocos2dx1
'''将项目的C\C++属性中的附加包含目录的EngineRoot,改变为引擎目录'''
def change():
cocos2dx1 = correctbase()
if cocos2dx1 == False:
print("change() is error ")
return
rename1="..\\proj.win32\\cocos2dx.props"
rename2="..\\proj.win32\\cocos2d_headers.props"
print rename1
print rename2
#更改“项目名.vcxproj”文件
filelist1 = os.listdir(os.curdir)
for name in filelist1:
if os.path.splitext(name)[1] != ".vcxproj":
continue
#修改1
try:
file = open(os.curdir + os.sep +name, "r+")
lines = file.readlines()
file.seek(0, os.SEEK_SET)
file.truncate(0)
for oneline in lines:
if str.find(oneline, "Import") != -1:
line1 = oneline.replace("..\\cocos2d\\cocos\\2d\\cocos2dx.props",rename1)
file.write(line1)
else:
file.write(oneline)
file.close()
except IOError as e:
print(e)
#修改2
try:
file = open(os.curdir + os.sep +name, "r+")
lines = file.readlines()
file.seek(0, os.SEEK_SET)
file.truncate(0)
for oneline in lines:
if str.find(oneline, "Import") != -1:
line2 = oneline.replace("..\\cocos2d\\cocos\\2d\\cocos2d_headers.props",rename2)
file.write(line2)
else:
file.write(oneline)
file.close()
except IOError as e:
print(e)
#修改3
try:
file = open(os.curdir + os.sep +name, "r+")
lines = file.readlines()
file.seek(0, os.SEEK_SET)
file.truncate(0)
for oneline in lines:
if str.find(oneline, "") != -1:
line3 = oneline.replace("$(EngineRoot)",cocos2dx1)
file.write(line3)
else:
file.write(oneline)
file.close()
except IOError as e:
print(e)
#修改4
try:
file = open(os.curdir + os.sep +name, "r+")
lines = file.readlines()
file.seek(0, os.SEEK_SET)
file.truncate(0)
for oneline in lines:
if str.find(oneline, "") != -1:
line4 = oneline.replace("$(_COCOS_LIB_WIN32_END)",cocos2dx13)
file.write(line4)
else:
file.write(oneline)
file.close()
except IOError as e:
print(e)
#修改5
xx= cocos2dx4+cocos2dx5+cocos2dx6+cocos2dx7+cocos2dx8+cocos2dx9+cocos2dx10+cocos2dx11
print xx
try:
file = open(os.curdir + os.sep +name, "r+")
lines = file.readlines()
file.seek(0, os.SEEK_SET)
file.truncate(0)
for oneline in lines:
if str.find(oneline, "") != -1:
line5 = oneline.replace("$(_COCOS_HEADER_WIN32_END)",cocos2dx4+cocos2dx5+cocos2dx6+cocos2dx7+cocos2dx8+cocos2dx9+cocos2dx10+cocos2dx11+cocos2dx12)
file.write(line5)
else:
file.write(oneline)
file.close()
except IOError as e:
print(e)
'''添加cocos2d_headers.props、cocos2d.props文件到proj.win32目录'''
def copyProps():
global cocos2dx2
global PropsFile
if os.path.isdir(cocos2dx2) == False:
print("copyProps() is error ")
return
if cocos2dx2[len(cocos2dx2) - 2] != os.sep:
cocos2dx2 += os.sep
for name in PropsFile:
filepath = cocos2dx2 + name
if os.path.exists(filepath) == True:
if os.path.splitext(filepath)[1] == ".props":
shutil.copy(filepath, os.getcwd())
else:
print("copyProps() is error ")
if __name__ == "__main__":
change()
copyProps()
<6>下面贴出IOS_Setting.py文件的代码
# -*- coding: utf-8 -*-
import os
import shutil
'''IOS的引擎路径默认是项目外的位置,也就是cocos安装引擎的projects文件夹下'''
'''将项目的C\C++属性中的附加包含目录的EngineRoot,改变为引擎目录'''
def change():
#更改“项目名.pbxproj文件
filelist1 = os.listdir(os.curdir)
for name in filelist1:
if os.path.splitext(name)[1] != ".pbxproj":
continue
#修改1
try:
file = open(os.curdir + os.sep +name, "r+")
lines = file.readlines()
file.seek(0, os.SEEK_SET)
file.truncate(0)
for oneline in lines:
if str.find(oneline, "$(SRCROOT)") != -1:
line1 = oneline.replace("$(SRCROOT)/../cocos2d","$(SRCROOT)/../../cocos2d")
file.write(line1)
print line1
else:
file.write(oneline)
file.close()
except IOError as e:
print(e)
if __name__ == "__main__":
change()
<2>注:除三个基本的外部工程外,如需要引用哪个新的外部工程就去cocos安装引擎下的debug中找到该外部工程的lib、dll文件,复制到项目下的pro.win32>>Debug.win32下,然后,项目>>属性>>链接器>>输入>>附加依赖项,加入该lib库的名字即可。
<3>项目移植android时,首先记得复制以下路径的这两个包放置于android工程的src,鼠标拖进去即可,将jni文件夹下的Android.mk文件中的路径改为指定引擎的绝对路径,勾选项目>>属性>>Builders>>CDT Builder,运行。
更改为:
<4>项目移植IOS时,在win32下,首先复制
IOS_Setting.py到项目的proj.ios_mac\项目名.xcodeproj\ 该路径下,双击运行即可,在Mac机对应版本引擎的projects目录记得放入一份创建项目时自带的引擎,该引擎位置指定为此目录,不能改变。
<5>下面贴出VS_Setting.py文件的代码
# -*- coding: utf-8 -*-
import os
import shutil
'''你需要自己把以cocos2dx1变量的值改为你自己实际的路径'''
cocos2dx1 = "D:\\cocos2d-x-3.6\\projects\\cocos2d"
cocos2dx2 = cocos2dx1+"\\cocos\\2d"
cocos2dx4 = "$(_COCOS_HEADER_WIN32_END);"
cocos2dx5 = cocos2dx1+"\\cocos\\editor-support;"
cocos2dx6 = cocos2dx1+"\\cocos;"
cocos2dx7 = cocos2dx1+"\\cocos\\platform;"
cocos2dx8 = cocos2dx1+"\\cocos\\platform\\desktop;"
cocos2dx9 = cocos2dx1+"\\external\\glfw3\\include\\win32;"
cocos2dx10 = cocos2dx1+"\\external\\win32-specific\\gles\\include\\OGLES;"
cocos2dx11 = cocos2dx1+"\\external\\freetype2\\include\\win32\\freetype2;"
cocos2dx12 = cocos2dx1+"\\external\\freetype2\\include\\win32\\"
cocos2dx13 ="$(_COCOS_LIB_WIN32_END);libcocos2d.lib"
PropsFile = ["cocos2d_headers.props", "cocos2dx.props"]
'''检查引擎版本'''
def correctbase():
global cocos2dx1
if os.path.isdir(cocos2dx1) == False:
print("correctbase() is error ")
return False
if cocos2dx1[len(cocos2dx1)-2] != os.sep:
cocos2dx1 += os.sep
file = ["cocos", "external"]
for name in file:
if os.path.isdir(cocos2dx1 + name) == False:
print("correctbase() is error ")
return False
return cocos2dx1
'''将项目的C\C++属性中的附加包含目录的EngineRoot,改变为引擎目录'''
def change():
cocos2dx1 = correctbase()
if cocos2dx1 == False:
print("change() is error ")
return
rename1="..\\proj.win32\\cocos2dx.props"
rename2="..\\proj.win32\\cocos2d_headers.props"
print rename1
print rename2
#更改“项目名.vcxproj”文件
filelist1 = os.listdir(os.curdir)
for name in filelist1:
if os.path.splitext(name)[1] != ".vcxproj":
continue
#修改1
try:
file = open(os.curdir + os.sep +name, "r+")
lines = file.readlines()
file.seek(0, os.SEEK_SET)
file.truncate(0)
for oneline in lines:
if str.find(oneline, "Import") != -1:
line1 = oneline.replace("..\\cocos2d\\cocos\\2d\\cocos2dx.props",rename1)
file.write(line1)
else:
file.write(oneline)
file.close()
except IOError as e:
print(e)
#修改2
try:
file = open(os.curdir + os.sep +name, "r+")
lines = file.readlines()
file.seek(0, os.SEEK_SET)
file.truncate(0)
for oneline in lines:
if str.find(oneline, "Import") != -1:
line2 = oneline.replace("..\\cocos2d\\cocos\\2d\\cocos2d_headers.props",rename2)
file.write(line2)
else:
file.write(oneline)
file.close()
except IOError as e:
print(e)
#修改3
try:
file = open(os.curdir + os.sep +name, "r+")
lines = file.readlines()
file.seek(0, os.SEEK_SET)
file.truncate(0)
for oneline in lines:
if str.find(oneline, "") != -1:
line3 = oneline.replace("$(EngineRoot)",cocos2dx1)
file.write(line3)
else:
file.write(oneline)
file.close()
except IOError as e:
print(e)
#修改4
try:
file = open(os.curdir + os.sep +name, "r+")
lines = file.readlines()
file.seek(0, os.SEEK_SET)
file.truncate(0)
for oneline in lines:
if str.find(oneline, "") != -1:
line4 = oneline.replace("$(_COCOS_LIB_WIN32_END)",cocos2dx13)
file.write(line4)
else:
file.write(oneline)
file.close()
except IOError as e:
print(e)
#修改5
xx= cocos2dx4+cocos2dx5+cocos2dx6+cocos2dx7+cocos2dx8+cocos2dx9+cocos2dx10+cocos2dx11
print xx
try:
file = open(os.curdir + os.sep +name, "r+")
lines = file.readlines()
file.seek(0, os.SEEK_SET)
file.truncate(0)
for oneline in lines:
if str.find(oneline, "") != -1:
line5 = oneline.replace("$(_COCOS_HEADER_WIN32_END)",cocos2dx4+cocos2dx5+cocos2dx6+cocos2dx7+cocos2dx8+cocos2dx9+cocos2dx10+cocos2dx11+cocos2dx12)
file.write(line5)
else:
file.write(oneline)
file.close()
except IOError as e:
print(e)
'''添加cocos2d_headers.props、cocos2d.props文件到proj.win32目录'''
def copyProps():
global cocos2dx2
global PropsFile
if os.path.isdir(cocos2dx2) == False:
print("copyProps() is error ")
return
if cocos2dx2[len(cocos2dx2) - 2] != os.sep:
cocos2dx2 += os.sep
for name in PropsFile:
filepath = cocos2dx2 + name
if os.path.exists(filepath) == True:
if os.path.splitext(filepath)[1] == ".props":
shutil.copy(filepath, os.getcwd())
else:
print("copyProps() is error ")
if __name__ == "__main__":
change()
copyProps()
<6>下面贴出IOS_Setting.py文件的代码
# -*- coding: utf-8 -*-
import os
import shutil
'''IOS的引擎路径默认是项目外的位置,也就是cocos安装引擎的projects文件夹下'''
'''将项目的C\C++属性中的附加包含目录的EngineRoot,改变为引擎目录'''
def change():
#更改“项目名.pbxproj文件
filelist1 = os.listdir(os.curdir)
for name in filelist1:
if os.path.splitext(name)[1] != ".pbxproj":
continue
#修改1
try:
file = open(os.curdir + os.sep +name, "r+")
lines = file.readlines()
file.seek(0, os.SEEK_SET)
file.truncate(0)
for oneline in lines:
if str.find(oneline, "$(SRCROOT)") != -1:
line1 = oneline.replace("$(SRCROOT)/../cocos2d","$(SRCROOT)/../../cocos2d")
file.write(line1)
print line1
else:
file.write(oneline)
file.close()
except IOError as e:
print(e)
if __name__ == "__main__":
change()
相关文章推荐
- mac环境下cocos2dx引擎3.x版本的创建工程步骤
- cocos2dx 3.x以上版本 lua中使用protobuf
- cocos2dx 3.x版本搭建Mac环境工程(创建一个新的工程)百分百可行
- cocos2dx-3.x 修改默认物理引擎为Box2D
- cocos2dx之音效引擎 ------------------------cocos2d-x 3.0正式版本(7.14)
- 如用使用高版本framework,比如支持iOS5及以上的工程中使用Social.framework
- KindEditor 4.X 以上版本取消远程图片上传功能(3.x版本的请往官网论坛找答案)
- cocos2dx 3.0以上版本的触摸事件
- 多平台响应键盘事件!(适用于Cocos2dx 3.0 alpha以上版本)
- cocos2dx 2.2.2版本以上解析json ----rapidjson
- 关于cocos2d-X 3.x版本使用引擎自带的物理引擎Physics
- FastReport 3.X或以上版本 打印中括号[], 尖括号, 单引号' 等特殊字符
- 探cocos2dx UI引擎(粗略阅读)(源码版本2.2.3)
- cocos2dx3.X项目重写(二)新的物理引擎
- cocos2dx3.x 导入别人工程到eclipse配置
- VS打开.net工程提示"无法读取项目文件"web.csproj",系统找不到指定路径"
- 获取工程路径(jar和普通文件结构通用) -- java
- cocos2dx 2.2版本以上生成新项目
- Cocos2d-x教程(30)-3.x版本物理引擎的使用