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

为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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: