跨平台编译coocs2d-x工程

1、文件路径问题。鉴于我们要实现跨平台处理,就要处理不同IDE对于文件路劲的管理。在VS中,代码管理完全按照物理路径去管理,剩下的部分是资源路径问题。在win7-vs2012以上的版本(vs110_xp对应版本设置再去搜索吧,已过去的工具就该放弃)可以选择在Debugging中的Working  Directory的值从$(ProjectDir)设置为$(ProjectDir)../Resources。但这要求每次增加资源或修改文件名也要同步在mac工作平台修改文件映射。

为放弃上面单平台管理的方式,于是cocos的团队在引擎中增加了文件管理工具FileUtils。我们只需要在在代码中增加一句:

AppDelegate::AppDelegate() {
    FileUtils::getInstance()->addSearchPath("../Resources",true);
}

这样子每次搜索路径时都会优先查找Resources文件夹的资源。

剩余的则是Android和Mac的代码文件组织。

Mac环境:

在Xcode中新建一个group对应相同的物理文件名,然后把文件夹下面的文件拉入项目文件树中,选择的方式是folder references即可。或者尝试直接整个文件夹以folder references的形式引入工程(未尝试)。

folder references:保持原先的路径物理结构,这样子才能适合多平台统一的头文件路径

group:类似于vs的文件筛选器,虚拟的路径,如果以此方式引入,则文件相对于工程的路径是同级路径,即处在同一个父目录下。

Android环境:

修改build_native.py中资源路径:

def copy_resources(app_android_root):

    # remove app_android_root/assets if it exists
    assets_dir = os.path.join(app_android_root, "assets")
    if os.path.isdir(assets_dir):
        shutil.rmtree(assets_dir)

    # copy resources
    os.mkdir(assets_dir)
    resources_dir = os.path.join(app_android_root, "")''' 把原路径去除
    if os.path.isdir(resources_dir):
        copy_files(resources_dir, assets_dir)

这在逻辑上固然增加了查找的时间,实际上可以自己手动读取配置Resources文件夹下的一个配置文件根据平台设置真正的资源路径。之后做文件路劲搜索时只使用这个唯一路径,从而减少在FileUtils中做路径测试的时间。

2、prefix head问题。在Xcode6中把cocos自己生成的路径删除掉,或者对比一下testCpp的配置文件就发现:无论是ios还是mac的工程,prefix head此项为空。

3、Linux环境 待续

下面是份链接博客。

http://www.itnose.net/detail/6090401.html

时间: 2024-10-10 16:41:34

跨平台编译coocs2d-x工程的相关文章

在Windows/Ubuntu下安装OpenGL环境(GLUT/freeglut)与跨平台编译(mingw/g++)

GLUT/freeglut 是什么? OpenGL 和它们有什么关系? OpenGL只是一个标准,它的实现一般自带在操作系统里,只要确保显卡驱动足够新就可以使用.如果需要在程序里直接使用OpenGL,会有很多非常恶心的预备工作要做,而且可能还要专门为平台的差异写一些代码.要跳过这些工作,可以用一个utility库,直接使用它提供的函数,就不用操心那些细节了.这样的库新一点的有GLEW,因为开源所以安装相对方便(大不了丢进去一起编译),但各种教程和书里常见的是闭源的GLUT.由于GLUT的作者已经

Ant编译打包Android工程流程

一.Ant编译打包android工程步骤 二.Ant apk签名 1.keystore签名    定义自己的签名文件 生成keystore文件:keytool -genkey -alias android.keystore -keyalg RSA - validity 20000 -keystore android.keystore 对应的java命令:jarsigner -verbose -keystore android.keystore -signedjar android_signed.

Go跨平台编译的方法学习

从第一天开始学习Golang就知道它有一个很让人心动的特性就是跨平台编译,但一直没有去使用.最近做了一个小东西需要用到这个特性,所以在网上进行了搜索. 首先找到是国内文章是利用下载Go的源码包,将对其进行编译安装,完成后Go/src下的make.bash生成跨平台的编译器,这样在每次用时需要指定GOOS及GOARCH来进行编译,如: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build //编译为linux 64位系统下的程序 如果需要编译windows

在VS2012下不安装VS2010编译VS2010的工程

虽然一路追随这VISUAL SUTDIO在编程,但是断档的情况还是有的,最近一次硬盘问题使得安装了所有的VS2003-VS2012的机器硬盘挂了,无奈只能够安装了,不过觉得没啥用了,就安装一个VS2012不就OK了嘛,不过因为VS2012对VS2010完美支持vcxproj,使得完全可能在VS2012中编译VS2010的工程,但是必须安装IDE,这太麻烦了,有人也提出了不安装VS2010进行工程编译的想法,不过最后也没有得出结论. 之前也有过研究,发现MSBUILD进行编译的需要一套“规则”,都

【Note2】用keil对工程编译时,工程中已经包含的文件会报错:cannot open source input file usb_conf.h No such file or directory

错误举例: ..\..\Libraries\STM32_USB-FS-Device_Driver\inc\usb_type.h(21): error:  #5: cannot open source input file "usb_conf.h": No such file or directory 这是因为没有设置 STM32 固件库的目录, 编译器就默认到 "Keil"根目录下的某某目录找去了.如果现在编译程序,会报错的 解决方法:引用固件库文件所在的目录需要在

cocos2dx-3.6版本简单的新建、编译、运行工程的操作

之前最早接触cocos2dx是2.1.2的版本,因为后来工作要求,开始使用quick做项目的开发就没有再接触-x的版本,本地下载了3.6版本的项目代码,这里整理一下3.6版本下项目新建初始时大概的流程(VS2012) 1,进入文件D:\Cocos2dx\cocos2d-x-3.6根目录下,点击setup.py会自动配置所需环境变量,按照提示的内容下载对应的未安装的开发工具(sdk,ndk,ant等)并配置对应的环境变量就好. 2,一切环境配置结束,开始新建项目: cocos new Projec

Zookeeper源码用ant进行编译为eclipse工程--转载

原文地址:http://www.it165.net/os/html/201411/10142.html Zookeeper GitHub的下载地址是:https://github.com/apache/zookeeper 解压,打开cmd,切换到Zookeeper源码的根目录下面(下面有一个build.xml文件),然后输入命令> ant eclipse 出现下面界面提示编译成功: 然后打开eclispe,随便什么版本,选择import,类型是现有的eclispe工程. 点击完成,但是发现我的源

跨平台编译CMake使用

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake.只是 CMake 的组态档取名为 CmakeLists.txt.Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用.这使得

iOS workspace 依次编译多个工程

目的:当我封装一个framework的时候,需要检验当前的改动,但是又不想编译完framework,又要编译测试工程. 步骤: 1. 选择测试工程 2. Edit Scheme 3. 选中Build->添加要编译的targe,调整编译顺序