android ndk使用gcc4.7 toolchain编译项目

项目引入了一些cocos2d-x 3.0的代码,大量使用c++11的新特性。这些在gcc4.6是不完全支持的,但是gcc4.7绝大部分已经支持。

设置toolchain的方法是在Application.mk中设置:

NDK_TOOLCHAIN_VERSION = 4.7

为了确认是否设置成功,在ndk-build调用时增加参数V=1。即 ndk-build v=1 ..其他参数..


这里在说一下关于新标准的经验。

依托于c++11的新标准,使用c++变得”爽“了很多。最本质的就是几个元素

1、auto关键字,这个可以使代码变得简洁很多,并且可以让程序员不那么关注类型(但是不是不关注类型)。

2、shared_ptr,虽然没有c++11的新标准项目也大量使用智能指针,但是归到标准库总是一件令人愉悦的事情。(你不需要引入boost或者是自己写一个智能指针库了)

3、function and bind,这两个东西的加入让回调函数变得优雅起来。 我使用脚本语言最方便的地方就是弱类型,比如lua,你可以随时随地保存一个function作为参数或者变量保存起来,然后合适的时机调用。合理使用function和bind你会发现c++有着不逊于高级语言的表达能力。

4、lambda,这个跟3一样,都是让代码变得整洁,让流程变得清晰。使用匿名函数,可以免去很多不必要的函数定义。不熟悉的人可能感觉语法诡异,但是熟悉后就会喜欢上它。参考java python lua objective-c....

5、thread,原本我更喜欢自己造轮子,但是造的多了就烦了。 使用thread就可以完美的解决各个平台的线程问题。而不需要使用pthread或者是自己的封装版本。老实说我现在还没有学会wp8平台下的线程库,但是借助于thread,我可以永远不去学习它。作为程序员,有的东西学的越多越好,有的东西没有太大必要学习,一味跟着微软后面跑的程序员不是好的程序员。


我现在想到的我喜欢并且常用的新特性就这些,另有一些不推荐使用的(如果不知道的话就不要知道):

1、统一初始化列表。 原因无他vs2012不支持,如果想要代码在wp8下编译,那就不要碰它

2、成员变量像java或c#一样,在声明的同时赋初值。 原因同上vs2012不支持。

3、部分特殊语义,不做列举,因为不喜欢。 有些语义是vs明确声明不支持的,这些高级货色除非证明是不可替代的,否则还是不要碰它。

4、变参模板,这个其实是很好的特性,跟1一样,可以2012不支持。暂时用替代方案吧。不过话说,除非是写signal或者是function这样的基础库,似乎用到变参模板的情况也不多。

你可能感兴趣的:(android ndk使用gcc4.7 toolchain编译项目)