创建cocos2d-x静态库为Xcode编译提速

把以前写的一个帖子内容转到这里来,写得比较乱,有时间再整理整理。

cocos2d-x项目编译太慢太长一直很让人诟病,特别是Xcode中的archive,要是再出几次错,就忒折磨人了,小小研究了下把基础库生成静态库嵌入到工程里面的方法,提高cocos2d-x项目编译速度,希望对一些人有帮助吧。

把cocos2d-x的cocos2d_libs工程从xcode游戏工程中删掉,用xcode单独打开ccocos2d_libs工程,其路径为YourApp/cocos2d/build/cocos2d_libs.xcodeproj

选 择target为“build all libs for iOS”, 在其右先选择模拟器,编译工程。等编译完成后,应该是已经生成五个静态库文件,但是在xcode里面看可能是红色的,这是xcode的bug,选中任意一 个静态库文件,在xcode的界面右侧显示其详情,可以看到其路径,路径的最后一项可能是Debug,而实际值可能是Debug-iphoneos或者 Debug-iphonesimulator,复制这个路径,去掉最后面的Debug,然后在终端里面用open命令打开,就可以看到生成的静态库放在 Debug-iphonesimulator下面了,同样地,再选择iOS Device进行编译,生成的静态库会放在Debug-iphoneos里了

Debug- iphonesimulator里面的静态库是适用于模拟器的, Debug-iphoneos里面的静态库是适用于真机的,这可以通过类似于lipo -info libPrint.a的命令进行查看,为了通用起见可以将这两者进行合并,这样生成的静态库既可以在模拟器下运行,也可以在真机下运行,合并的命令类似于 下面的:

lipo -create ./Debug-iphonesimulator/libCocosDenshion\ iOS.a  ./Debug-iphoneos/libCocosDenshion\ iOS.a  -output $OUTPUTDIR_PATH/libCocosDenshion\ iOS.a

方便起见,最好是写一个脚本将5个静态库进行合并。

将5个静态库单独放入工程路径下的某个文件夹下,最好是你游戏工程的cocos2d目录下,然后在Build Phase里的Link Binary with Libraries中添加这5个静态库,就可以编译通过了

特别说明的是:生成的静态库很大,最大的静态库会超过1G,如果不是多人合作的话不建议加入到git或svn中

能否跟进cocos2d-x源代码中打断点呢?

不是不可能也是有办法的:
首先在cocos2d-x的工程中打上断点 ,然后点击view ->navigators ->show breakpoint navigators 后 右击选择你刚打的断点,首先选择 share breakpoint 然后点击 move breakpoint to后选择你运行的项目(据我测试应该是User)后,然后转到你运行的项目debug即可
参考:http://www.cocoachina.com/ask/questions/show/4537/

以上说的是Debug模式,要发布App时需要重新生成Release模式下的静态库,再添加到你的项目中发布。也可以一开始就把Debug静态库和Release静态库全部生成,一劳永逸

附:静态库合并shell脚本

#!/bin/bash
CURRENT_PATH=`pwd`
OUTPUTDIR_PATH=./staticlibrary
echo $CURRENT_PATH
echo $OUTPUTDIR_PATH
cd $OUTPUTDIR_PATH
rm -f ./*.a
cd $CURRENT_PATH
lipo -create ./Debug-iphonesimulator/libCocosDenshion\ iOS.a  ./Debug-iphoneos/libCocosDenshion\ iOS.a  -output $OUTPUTDIR_PATH/libCocosDenshion\ iOS.a
lipo -create ./Debug-iphonesimulator/libchipmunk\ iOS.a  ./Debug-iphoneos/libchipmunk\ iOS.a  -output $OUTPUTDIR_PATH/libchipmunk\ iOS.a
lipo -create ./Debug-iphonesimulator/libcocos2dx-extensions\ iOS.a  ./Debug-iphoneos/libcocos2dx-extensions\ iOS.a  -output $OUTPUTDIR_PATH/libcocos2dx-extensions\ iOS.a
lipo -create ./Debug-iphonesimulator/libbox2d\ iOS.a  ./Debug-iphoneos/libbox2d\ iOS.a  -output $OUTPUTDIR_PATH/libbox2d\ iOS.a
lipo -create ./Debug-iphonesimulator/libcocos2dx\ iOS.a  ./Debug-iphoneos/libcocos2dx\ iOS.a  -output $OUTPUTDIR_PATH/libcocos2dx\ iOS.a
时间: 2024-10-16 01:42:06

创建cocos2d-x静态库为Xcode编译提速的相关文章

iOS开发,创建自己的静态库

为什么要创建自己的静态库?嗯,是为了装13.好,作为一名优秀的程序猿,我是不会放过任何一个装13的技能的,今天就再分享一个技能--自己生成静态库. 不开玩笑了,下边正式开始. 一.用Xcode新建一个工程,如下: 看清楚啦,一定要选中"static library"这个. 二.给你的静态库命名,这一环节我就略过了.下图是我创建出来的工程 2.1.在头文件中,将你想公开出去的方法名写在这里,如图(示例方法是输入一个千分位表示的金额字符串,转化为整型数) 2.2.将实现部分写在.m文件中.

libpomelo 增加编译静态库cocos2d-x xcode 工程

离 https://github.com/NetEase/libpomelo 下载最新版本.拉开拉链,静态库 ./pomelo_gyp -DTO=ios ./build_ios ./build_iossim 分别生成了ios设备(arm)和ios虚拟机(i386)的静态库,用lipo把两个打包在一起: lipo -create ./build/Default-iphoneos/libpomelo.a  ./build/Default-iphonesimulator/libpomelo.a  -o

Window中创建和使用静态库与动态库

一.静态库的创建和使用 1. 静态库的创建 (1) 在VS2013中选择菜单->File->New->Project,选择Visual C++ ->Win32选项,然后点击Win32 Project图标,选择Win32 Application Wizard,选择Application type下的Static library选项.工程名字为TestStaticLib. (2)在Solution Explorer的Header Files下新建一个test_header.h头文件 1

创建并使用静态库(ar 命令)

archive命令的功能是:创建或改动归档文件或者从归档文件里析取信息.能够简单的理解为一个打包工具,将成员文件依照一定的规则构建到.a文件里,通常这样的类型的归档文件用来将经常使用的例程组织为一个静态库,方便应用程序的链接. 重要參数: d - 从archive中删除模块,若指定v选项的话还会在删除的过程中信息打印: r - 以替换的方式添加模块: c - 强制创建一个库.无论已存在与否. s - 为库中的可重定位目标文件创建符号索引或者更新, 对一个库运行ar -s等价于对其运行ranlib

对arm指令集的疑惑,静态库运行,编译报错等问题

转载自http://www.jianshu.com/p/4a70aa03a4ea?utm_campaign=hugo&utm_medium=reader_share&utm_content=note&utm_source=qq 对arm指令集的疑惑,静态库运行的问题,翻看了很多资料,整理如下: 1:blog.csdn.net/lizhongfu2013/article/details/42387311 下面内容转发自上述链接:iOS开发-制作同时支持armv7,armv7s,arm

Linux 下创建和使用静态库

Linux 下使用 ar 工具(Windows 下vs使用lib.exe,将目标文件压缩到一起,并且对其进行编号和索引,以便于查找和检索),创建步骤如下图所示: Linux 下静态库命名规范, lib[your_library_name].a,其中lib为前缀,中间是静态库名,后缀名是 .a 1. 将源文件编译成目标文件 .o (假设源文件为 Math.cpp)  g++  -c  Math.cpp  执行此命令后,便会生成 Math.o 目标文件 2. 然后用 ar 工具将目标文件打包成 .a

(一〇四)使用Xcode6创建framework动态静态库

在Xcode6以前,创建framework可以使用iOS-Universal-Framework模板来创建framework,现在苹果已经提供了模板,如下图选择: 使用此模版创建的默认是动态库,方法和上节提到的.a一样,也可以使用lipo来合并真机和模拟器的库. 还有自定义动态库的应用是不被允许上传的. 动态库应该被添加到的位置如下:在工程配置的General之中. 因此应该生成静态库,更改配置的方法如下: framework相比.a,优点是会自动把资源包含到framework内. 版权声明:本

codeblocks创建和使用静态库(C语言)

静态库  (扩展名为 .a 或 .lib) 是包含函数的文件,用于在link阶段整合执行程序,动态链接库(扩展名  .dll)是不在link阶段整合进执行程序中的. DLL文件在执行阶段动态调用 下面我们将用免费的开发工具CodeBocks开发静态库 创建静态库 启动Codeblocks并创建一个类型为 "Static Library" (File/New/Project/Static Library/Go)的项目. 给项目取一个名字("malibrairie" f

ios中静态库的创建和使用、制作通用静态库(Cocoa Touch Static Library)

创建静态库可能出于以下几个理由: 1.你想将工具类代码或者第三方插件快捷的分享给其他人而无需拷贝大量文件.2.你想让一些通用代码处于自己的掌控之下,以便于修复和升级.3.你想将库共享给其他人,但不想让他们看到你的源代码. Xcode6创建静态库详解(Cocoa Touch Static Library) 一.创建静态库文件 打开Xcode, 选择File ----> New ---> Project. 新建工程. 选择iOS ----> Framework & Library -