加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 19:56:26 所属栏目:百科 来源:网络整理
导读:把以前写的一个帖子内容转到这里来,写得比较乱,有时间再整理整理。 cocos2d-x项目编译太慢太长一直很让人诟病,特别是Xcode中的archive,要是再出几次错,就忒折磨人了,小小研究了下把基础库生成静态库嵌入到工程里面的方法,提高cocos2d-x项目编译速度,

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

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个静态库。接着在build setting里的header search path里加上头文件路径,比如我用的就是:$(SRCROOT)/../cocos2d/cocos/platform/ios,这样可以让它自己去找头文件,然后编译就没问题了。


特别说明的是:生成的静态库很大,最大的静态库会超过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/libCocosDenshioniOS.a./Debug-iphoneos/libCocosDenshioniOS.a-output$OUTPUTDIR_PATH/libCocosDenshioniOS.a
lipo-create./Debug-iphonesimulator/libchipmunkiOS.a./Debug-iphoneos/libchipmunkiOS.a-output$OUTPUTDIR_PATH/libchipmunkiOS.a
lipo-create./Debug-iphonesimulator/libcocos2dx-extensionsiOS.a./Debug-iphoneos/libcocos2dx-extensionsiOS.a-output$OUTPUTDIR_PATH/libcocos2dx-extensionsiOS.a
lipo-create./Debug-iphonesimulator/libbox2diOS.a./Debug-iphoneos/libbox2diOS.a-output$OUTPUTDIR_PATH/libbox2diOS.a
lipo-create./Debug-iphonesimulator/libcocos2dxiOS.a./Debug-iphoneos/libcocos2dxiOS.a-output$OUTPUTDIR_PATH/libcocos2dxiOS.a

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读