Code::Blocks如何支持C++11特性
为了给同事分享C++11标准,需要一个演示C++11的编程环境。VS2013太大,安装起来不太方便。由于电脑上之前有安装codeblock,于是升级MinGW。去MinGW官网http://www.mingw.org/上去下载一个安装程序,安装完成后,打开安装管理器MinGW Installer,把Basci Setup里边的全都安装完。然后设置windows里的环境变量,打开codeblock的配置,配置编译器和调试环境。如下图。
然后创建一个C++工程,编译。代码如下: auto是C++11中的关键字,用来检测编译器是否支持C++11标准。
#include <iostream> using namespace std; int main() { auto xx = 12; cout << "Hello world!" << endl; return 0; }
居然编译不过,Execution of 'mingw32-g++.exe -Wall -g -c Failed。仔细研究了下,发现MinGW安装路径bin里没有mingw32-g++.exe 。但是安装管理器MinGW Installation Manager里显示是安装过的,还是尝试着把gc++再安装一遍,居然安装失败。只好自己去下载g++相关的文件安装了。根据安装管理器的里g++相关的信息,Google一下。
在这个链接:http://www.mingw.org/aggregator/sources/2?page=3 下找到了需要下载的文件,下载后解压(WinRAR解压不了,需要下载7zip),把对应的文件拷贝到 MinGW\bin里,然后在CodeBlock里编译,倒是能编译了,但是有错误,在auto那一行提示“ does not name a type”。看来没有支持到C++11标准。按照资料所说,GCC 4.8.2就很好的支持C++11了,我这里的GCC是4.9.1版本了,应该会支持到C++11。还是Google吧,有人说要加`-std=c++11` 或者 `-std=c++0x` 在变量列表。或者调用g++编译时带上C++11相关参数‘g++ -std=c++11 decdef.cpp -o decdef’。这样一来就有点扯淡了,CodeBlock里来这一套很不方便还别扭。最终在setting - compiler and debugger- compiler setting - compiler Flag - All categories里找到一个C++11相关的选项,如图:
到此成功!