记录create_project.py 关于创建报错修改

简介: python create_project.py -project myFirstGame -package com.my.firstgame -language ccp如果出现控制台窗口提示print语句错误,请修改create_project.

python create_project.py -project myFirstGame -package com.my.firstgame -language ccp

如果出现控制台窗口提示print语句错误,请修改create_project.py中的所有print语句,在引号前后添加括号:


原始语句:

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

修改后语句:

print ("Usage: create_project.py -project PROJECT_NAME -package PACKAGE_NAME -language PROGRAMING_LANGUAGE")

 


以下是文件全文cocosd-x2.1.5版本。。修改之后能创建但是会提示一些错误,但没关系。



#!/usr/bin/python

# create_project.py
# Create cross-platform cocos2d-x project
# Copyright (c) 2012 cocos2d-x.org
# Author: WangZhe


# define global variables
context = {
"language"          : "undefined",
"src_project_name"  : "undefined",
"src_package_name"  : "undefined", 
"dst_project_name"  : "undeifned",
"dst_package_name"  : "undefined",
"src_project_path"  : "undefined",
"dst_project_path"  : "undefined",
"script_dir"        : "undefined",
}
platforms_list = []


# begin
import sys
import os, os.path
import json
import shutil


def dumpUsage():
    print ("Usage: create_project.py -project PROJECT_NAME -package PACKAGE_NAME -language PROGRAMING_LANGUAGE")
    print ("Options:")
    print ("  -project   PROJECT_NAME          Project name, for example: MyGame")
    print ("  -package   PACKAGE_NAME          Package name, for example: com.MyCompany.MyAwesomeGame")
    print ("  -language  PROGRAMING_LANGUAGE   Major programing lanauge you want to used, should be [cpp | lua | javascript]")
    print ("")
    print ("Sample 1: ./create_project.py -project MyGame -package com.MyCompany.AwesomeGame")
    print ("Sample 2: ./create_project.py -project MyGame -package com.MyCompany.AwesomeGame -language javascript")
    print ("")


def checkParams(context):
    # generate our internal params
    context["script_dir"] = os.getcwd() + "/"
    global platforms_list
    
    # invalid invoke, tell users how to input params
    if len(sys.argv) < 7:
        dumpUsage()
        sys.exit()
    
    # find our params
    for i in range(1, len(sys.argv)):
        if "-project" == sys.argv[i]:
            # read the next param as project_name
            context["dst_project_name"] = sys.argv[i+1]
            context["dst_project_path"] = os.getcwd() + "/../../projects/" + context["dst_project_name"]
        elif "-package" == sys.argv[i]:
            # read the next param as g_PackageName
            context["dst_package_name"] = sys.argv[i+1]
        elif "-language" == sys.argv[i]:
            # choose a scripting language
            context["language"] = sys.argv[i+1]
    
    # pinrt error log our required paramters are not ready
    raise_error = False
    if context["dst_project_name"] == "undefined":
        print ("Invalid -project parameter")
        raise_error = True
    if context["dst_package_name"] == "undefined":
        print ("Invalid -package parameter")
        raise_error = True
    if context["language"] == "undefined":
        print ("Invalid -language parameter")
        raise_error = True
    if raise_error != False:
        sys.exit()
                                 
    # fill in src_project_name and src_package_name according to "language"
    if ("cpp" == context["language"]):
        context["src_project_name"] = "HelloCpp"
        context["src_package_name"] = "org.cocos2dx.hellocpp"
        context["src_project_path"] = os.getcwd() + "/../../template/multi-platform-cpp"
        platforms_list = ["ios",
                          "android",
                          "win32",
                          "mac",
                          "blackberry",
                          "linux",
                          "marmalade"]
    elif ("lua" == context["language"]):
        context["src_project_name"] = "HelloLua"
        context["src_package_name"] = "org.cocos2dx.hellolua"
        context["src_project_path"] = os.getcwd() + "/../../template/multi-platform-lua"
        platforms_list = ["ios",
                          "android",
                          "win32",
                          "blackberry",
                          "linux",
                          "marmalade"]
    elif ("javascript" == context["language"]):
        context["src_project_name"] = "HelloJavascript"
        context["src_package_name"] = "org.cocos2dx.hellojavascript"
        context["src_project_path"] = os.getcwd() + "/../../template/multi-platform-js"
        platforms_list = ["ios",
                          "android",
                          "win32"]
# end of checkParams(context) function


def replaceString(filepath, src_string, dst_string):
    content = ""
    f1 = open(filepath, "rb")
    for line in f1:
        if src_string in line:
            content += line.replace(src_string, dst_string)
        else:
            content += line
    f1.close()
    f2 = open(filepath, "wb")
    f2.write(content)
    f2.close()
# end of replaceString


def processPlatformProjects(platform):
    # determine proj_path
    proj_path = context["dst_project_path"] + "/proj.%s/" % platform
    java_package_path = ""


    # read josn config file or the current platform
    f = open("%s.json" % platform)
    data = json.load(f)


    # rename package path, like "org.cocos2dx.hello" to "com.company.game". This is a special process for android
    if (platform == "android"):
        src_pkg = context["src_package_name"].split('.')
        dst_pkg = context["dst_package_name"].split('.')
        os.rename(proj_path + "src/" + src_pkg[0],
                  proj_path + "src/" + dst_pkg[0])
        os.rename(proj_path + "src/" + dst_pkg[0] + "/" + src_pkg[1],
                  proj_path + "src/" + dst_pkg[0] + "/" + dst_pkg[1])
        os.rename(proj_path + "src/" + dst_pkg[0] + "/" + dst_pkg[1] + "/" + src_pkg[2],
                  proj_path + "src/" + dst_pkg[0] + "/" + dst_pkg[1] + "/" + dst_pkg[2])
        java_package_path = dst_pkg[0] + "/" + dst_pkg[1] + "/" + dst_pkg[2]


    # rename files and folders
    for i in range(0, len(data["rename"])):
        tmp = data["rename"][i].replace("PACKAGE_PATH", java_package_path)
        src = tmp.replace("PROJECT_NAME", context["src_project_name"])
        dst = tmp.replace("PROJECT_NAME", context["dst_project_name"])
        if (os.path.exists(proj_path + src) == True):
            os.rename(proj_path + src, proj_path + dst)


    # remove useless files and folders
    for i in range(0, len(data["remove"])):
        dst = data["remove"][i].replace("PROJECT_NAME", context["dst_project_name"])
        if (os.path.exists(proj_path + dst) == True):
            shutil.rmtree(proj_path + dst)
    
    # rename package_name. This should be replaced at first. Don't change this sequence
    for i in range(0, len(data["replace_package_name"])):
        tmp = data["replace_package_name"][i].replace("PACKAGE_PATH", java_package_path)
        dst = tmp.replace("PROJECT_NAME", context["dst_project_name"])
        if (os.path.exists(proj_path + dst) == True):
            replaceString(proj_path + dst, context["src_package_name"], context["dst_package_name"])
    
    # rename project_name
    for i in range(0, len(data["replace_project_name"])):
        tmp = data["replace_project_name"][i].replace("PACKAGE_PATH", java_package_path)
        dst = tmp.replace("PROJECT_NAME", context["dst_project_name"])
        if (os.path.exists(proj_path + dst) == True):
            replaceString(proj_path + dst, context["src_project_name"], context["dst_project_name"])
                  
    # done!
    print ("proj.%s\t\t: Done!") % platform
# end of processPlatformProjects






# -------------- main --------------
# dump argvs
# print sys.argv


# prepare valid "context" dictionary
checkParams(context)
# import pprint
# pprint.pprint(context)


# copy "lauguage"(cpp/lua/javascript) platform.proj into cocos2d-x/projects/<project_name>/folder
if (os.path.exists(context["dst_project_path"]) == True):
    print ("Error:" + context["dst_project_path"] + " folder is already existing")
    print ("Please remove the old project or choose a new PROJECT_NAME in -project parameter")
    sys.exit()
else:
    shutil.copytree(context["src_project_path"], context["dst_project_path"], True)


# call process_proj from each platform's script folder          
for platform in platforms_list:
    processPlatformProjects(platform)
#    exec "import %s.handle_project_files" % (platform)
#    exec "%s.handle_project_files.handle_project_files(context)" % (platform)


print ("New project has been created in this path: ") + context["dst_project_path"].replace("/tools/project-creator/../..", "")
print ("Have Fun!")

相关文章
|
XML 数据库 数据格式
嵌入式工作流程开发!工作流 Activiti 框架中子流程的使用指南
本篇文章对工作流Activiti框架中的子流程进行的详尽的分析和说明,在工作流Activiti集成到项目中开发时,可以嵌入子流程进行使用。子流程包括了事件子流程,事务子流程以及调用活动子流程。通过对内嵌子流程的方式的学习,可以帮助我们将工作流框架很好地应用在继承式建模的流程场景下。
1330 0
嵌入式工作流程开发!工作流 Activiti 框架中子流程的使用指南
技术宅之---用手机实现“移动网关”
本文假定读者已知道内网穿透相关认知。 或许你用过花生壳、frp、ngrok、teamviewer等穿透工具,今天要给大家介绍的是smarGate(https://github.com/lazy-luo/smarGate) 1、samrGate是什么? 官方命名为“移动网关”,通过手机客户端将位于内网的服务端网络进行按需暴露。
3932 0
|
小程序
微信小程序:本地开发环境和线上环境配置
微信小程序:本地开发环境和线上环境配置
993 0
|
消息中间件 自然语言处理 Cloud Native
DolphinScheduler&RocketMQ 联合 Meetup 即将重磅开启,集中展示任务调度与消息队列能力!
作为消息队列和工作流任务调度的领先者,以及 Apache 基金会孵化器毕业的中国优秀项目,RocketMQ 和 DolphinScheduler 强强联手,邀请来自互联网企业大数据专家与社区核心开发者,为大家带来一场大数据开发技术以及生产场景实践的精彩分享!
DolphinScheduler&RocketMQ 联合 Meetup 即将重磅开启,集中展示任务调度与消息队列能力!
|
机器学习/深度学习 人工智能 分布式计算
【DSW Gallery】PAI-DSW开通及授权
本文介绍如何结合AI工作空间开通PAI-DSW并为阿里云子账号授权进行使用。
【DSW Gallery】PAI-DSW开通及授权
|
网络协议 网络架构
eNSP | RIP动态路由配置
eNSP | RIP动态路由配置
eNSP | RIP动态路由配置
|
Linux
linux设置时钟同步
redhat 时钟同步 ntp
332 0
linux设置时钟同步
|
人工智能 自然语言处理 监控
杜蕾斯的双11:一场曼伦营销理论体系与阿里云数据中台相结合的实践
全球安全套行业“老大哥”杜蕾斯实现全网销售额突破1.7亿元,同比增长20%,滴露轻松斩获全网1.8亿元销售额......荣获这些战绩,除了有利洁时曼伦总经理吕有名独创的“6W4M”方法论体系指导之外,亦离不开阿里云数据中台的加持!
9596 1
杜蕾斯的双11:一场曼伦营销理论体系与阿里云数据中台相结合的实践
|
JSON 关系型数据库 MySQL
MySQL - In this situation, path expressions may not contain the * and ** tokens.
MySQL - In this situation, path expressions may not contain the * and ** tokens.
544 0
|
存储 弹性计算 人工智能
在本地机房就能享受专属公共云服务?详解阿里云本地化部署服务云盒
6 月 30 日,阿里云宣布本地化部署服务阿里云云盒 Cloud Box 正式上线。从即日起,用户通过阿里云官网下单即可购买。
在本地机房就能享受专属公共云服务?详解阿里云本地化部署服务云盒