您的位置:首页 > 移动开发 > Cocos引擎

VS2010一键配置cocos2d-x开发,帅呆了

2013-10-03 13:08 429 查看
用VS2010开发cocos2d-x时,是不是很麻烦???在网上看了很多方法,没一个我喜欢的,都忒麻烦了,受不了, 自己写了一个脚本,每次建立一个新项目时,只要运行一下就行了。我们来看看代码

# -*- coding: utf-8 -*-
import os
import shutil

''' 你需要自己把以下三个变量的值改为你自己实际的路径,libdll根据自己需要添加 '''
cocos2dx = "D:\ProgramTool\coco\cocos2d-2.1beta3-x-2.1.1"
cocoslibdll = "D:\ProgramTool\coco\cocos2d-2.1beta3-x-2.1.1\Debug.win32"
libdll = ["libcocos2d.lib", "libCocosDenshion.lib", "glew32.lib", "libBox2D.lib",
"libcocos2d.dll", "libCocosDenshion.dll", "glew32.dll", "libxml2.dll", "iconv.dll", "zlib1.dll", "libtiff.dll", "pthreadVCE2.dll"]

def correctbase():
global cocos2dx
if os.path.isdir(cocos2dx) == False:
return False
if cocos2dx[len(cocos2dx)-2] != os.sep:
cocos2dx += os.sep
file = ["cocos2dx", "CocosDenshion", "external"]
for name in file:
if os.path.isdir(cocos2dx + name) == False:
return False
return cocos2dx

def change():
cocos2dx = correctbase()
if cocos2dx == False:
print("base dir \'cocos2dx\' is error ")
return

filelist = os.listdir(os.curdir)
for name in filelist:
if os.path.splitext(name)[1] != ".vcxproj":
continue
try:
file = open(os.curdir + os.sep +name, "r+", encoding = 'utf-8')
lines = file.readlines()
file.seek(0, os.SEEK_SET)
file.truncate(0)
for oneline in lines:
if str.find(oneline, "<AdditionalIncludeDirectories>") != -1:
line = oneline.replace("$(SolutionDir)", cocos2dx)
file.write(line)
else:
file.write(oneline)
file.close()
except IOError as e:
print(e)

def copylibdll():
global cocoslibdll
global libdll
if os.path.isdir(cocoslibdll) == False:
print("dir \'cocoslibdll\' is error ")
return
if cocoslibdll[len(cocoslibdll) - 2] != os.sep:
cocoslibdll += os.sep

if os.path.isdir("..\\..\\Debug.win32") == False:
os.mkdir("..\\..\\Debug.win32")
if os.path.isdir("..\\..\\Release.win32") == False:
os.mkdir("..\\..\\Release.win32")

for name in libdll:
filepath = cocoslibdll + name
if os.path.exists(filepath) == True:
if os.path.splitext(filepath)[1] == ".lib":
shutil.copy(filepath, os.getcwd())
else:
shutil.copy(filepath, "..\\..\\Debug.win32")
shutil.copy(filepath, "..\\..\\Release.win32")

def copypicture():
if os.path.isdir("..\\..\\Debug.win32") == False:
os.mkdir("..\\..\\Debug.win32")
if os.path.isdir("..\\..\\Release.win32") == False:
os.mkdir("..\\..\\Release.win32")
resourcedir = "..\\Resources\\"
filename = ["CloseNormal.png", "CloseSelected.png", "HelloWorld.png"]
for name in filename:
filepath = resourcedir + name
if os.path.exists(filepath) == True:
shutil.copy(filepath, "..\\..\\Debug.win32")
shutil.copy(filepath, "..\\..\\Release.win32")

def changeusersetting():
filelist = os.listdir(os.curdir)
for name in filelist:
if os.path.splitext(name)[1] != ".user":
continue
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, "$(ProjectDir)..\\Resources") != -1 and str.find(oneline, "Debug|Win32") != -1:
line = oneline.replace("$(ProjectDir)..\\Resources", "..\..\Debug.win32")
file.write(line)
elif str.find(oneline, "$(ProjectDir)..\\Resources") != -1 and str.find(oneline, "Release|Win32") != -1:
line = oneline.replace("$(ProjectDir)..\\Resources", "..\..\Release.win32")
file.write(line)
else:
file.write(oneline)
file.close()
except IOError as e:
print(e)

if __name__ == "__main__":
change()
copylibdll()
copypicture()
changeusersetting()


现在,我们来看看这里面都做了什么事,首先,我会把工程的附加包含目录中使用到的$(SolutionDir)改为cocos2d-x所在的目录,如下图:



接着,我又把所有lib拷贝到当前文件夹,把所有dll拷贝到Debug.win32和Release.win32

然后呢,我又会把cocos2d-x自己生成的CloseNormal.png,CloseSelected.png,HelloWorld.png也拷贝到Debug.win32和Release.win32

最后,我把工作目录也改到相应的Debug.win32和Release.win32,这样就可以直接调试了

就这么简单,一个脚本搞定,网上那些拷贝来拷贝去的做法忒麻烦了,有些博文甚至还说要拷贝到系统文件夹下。。。。

要把这个脚本复制到项目工作目录下哦,就是拷贝到xxxxx.win32.vcxproj文件所在目录,vs2012我没安装,没测试过,用vs2012的朋友,自己测试一下哦
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: