使用最新cocos2d-x3.16在win32环境下使用gen-libs生成prebuilt库时提示不支持2017,请问是否可以简单设置下参数支持vs2017
请问是否没有必要再去使用cocos gen-libs命令生成的prebuilt库了。我看好多人用vs2017 ,但是现在的gen-libs不支持2017,难道大家每次编译都是带着项目里的引擎代码一起编译么?这样不是浪费时间,或者说是不是现在即使带有引擎代码的项目在编译时都会自动略过引擎部分,直接使用上次编译过后的文件?
新项目第一次编译时间会很长,后续如果没修改引擎源码,引擎部分是不会重新编译的。vs2017 知道一个库相关的代码都没有修改过,就不会编译,如果改了一个源文件,引用它的库都会重编译,这是 IDE 的策略。
即使是这样,有一些cocos依赖的第三方库,是编译好的,就不能保证100%兼容2017,这个取决于2017和2015两者的差异,所以建议使用2015,使用2017遇到兼容问题,就需要解决兼容问题。
嗯嗯。我已经卸载了17 重装15了。您说的IDE的策略,到了android端编译的时候是否会同样如此:一个库相关的代码都没有修改过,就不会编译 ?
谢谢你的解答。
是的 IDE 的策略,通过 Android Studio 首次编译非常慢,后续也是只编译变更相关的库。需要注意修改编译配置也会引起重新编译,比如把 armabi-v7a 改成 x86,这个很容易理解。
命令行工具 cocos compile 不使用静态库,应该是每次修改都会带引擎源码全量编译,这个测试一下就知道了。因为最近一直使用 IDE 所以对这个不太确定。
嗯嗯。刚想起来确实是这样,以前一个2.x时代的项目 在当时的ADT上编译时就可以做到每次不编译引擎库。不过貌似当时只在windows 上可以mac上还是每次都全部编译。已经装好2015,现在开始生成prebuilt,哈哈哈有洁癖没办法。
谢谢李达的解答
终于,在此环境下创建的template为binary的项目终于跑起来了: windows + vs2015 + cocos2d-x.3.16 + prebuilt预编译库,算是一个总结吧,也给跟我一样喜欢钻牛角尖的同学们有所帮助。
目的么就是为了不想在编译的时候把引擎代码也都全部编一遍,哪怕只是在第一次编译项目,其实每次clean只后也可能会全部编译,就希望任何情况下只使用prebuilt里的库文件,只编译自己的代码。
遇到的几个问题:
1, vs2017无法使用cocos gen-libs命令,
解决办法: 换成vs2015
2, 创建模板为binary模式的项目之前,要先在C:\Cocos\Cocos2d-x\cocos2d-x-3.16\templates目录下具备cpp-template-binary目录,默认是没有这个目录的, 3.16的cocos命令没有了gen-templates参数,被官方移除了
解决办法:
1>下载老版本的cocos2d,我是下的3.11.1,环境变量里cocos相关参数都改成3.11.1,然后输入命令:cocos gen-libs -p win32 --vs 2015,生成prebuilt库文件(当时我为了测试是有这么一部操作的,但我认为这一步没有必要,可以跳过);
2>命令行输入"cocos gen-templates"生成当前3.11.1版本下的项目模板文件,其中就会包含cpp-template-binary目录;
3>下载最新版本的3.16,环境变量里把3.11.1都换成3.16,重启命令行
4>生成3.16版的prebuilt: cocos gen-libs -p win32 --vs 2015
5>把3.11.1版本里的templates/cpp-template-binary目录复制到3.16的templates目录里,然后使用vs-code或者nodepad++把这个目录里的全部的3.11.1字符替换成3.16
6>这时可以直接双击cpp-template-binary目录里的HelloCpp.sln打开这个模板项目编译测试,记住在这个目录里创建一个Resources文件夹,程序运行时需要,编译时会提示报错,把main.cpp的_tWinMain()方法前的APIENTRY换成WINAPI(最新的3.16貌似不认这个APIENTRY了,我是看的其他模板里的main.cpp里是用的WINAPI,就复制过来了),然后就可以编译通过了。
7>创建你自己的项目,使用binary模板,无需在VS里项目->配置属性里更改C/C++的参数。运行,跑通。
http://docs.cocos.com/cocos2d-x/manual/zh/editors_and_tools/cocosCLTool.html
cocos new MyGame -p com.MyCompany.MyGame -l cpp -d ~/MyCompany -t binary
模板是被融合进创建命令了,没被移除掉,上面文档可以看 cocos 命令介绍,这样的话你的步骤会简单很多。
顺带提一下文档有更新,欢迎阅读反馈 传送
额~~~ 你那边可以在没有cocos2d-x-3.16\templates\cpp-template-binary这个目录的情况下,正常创建一个binary项目? 还是我有什么误解的地方?
我下载的3.16引擎包,C:\Cocos\Cocos2d-x\cocos2d-x-3.16\templates,这个目录里,根本没有"cpp-template-binary"这个目录,你说是不是被移除掉了?
刚去确认了一下,是被移除掉了,现在使用静态库8楼你给的解决方法应该是最简单的,不然就是得按默认模板建项目,然后手动修改项目配置。文档这个地方有问题,当初这个命令没测试到,我去建个 Issue,非常感谢你的刨根问底。
哈哈哈哈 不谢不谢。谁让我这么爱cocos呢。也谢谢子达你百忙之中的及时反馈。