看到微軟發(fā)布vs2013 preview版,依然沒有完成C++11的全部功能。 gcc和clang早做到了。 一直沒有在windows平臺上找到合適的IDE可以使用gcc或者clang,所以對C++的實驗一直止步于vs的支持狀況。
突然看到Qt Creator, 然后就試了以下,果然成功。 組合包含了g++4.8.1的mingw, Qt Creator可以做為優(yōu)秀的輕量級IDE了。 而且, 還可以使用Qt,能量無限。 Qt本身在C++11的嘗試上也走在了前列。
依賴軟件包:
MinGW比較難找,試了好幾個發(fā)布包,這個最好。最新的gcc,完整的lib, 還帶著gdb,而且,還有64位可以選擇。
設(shè)置
1. CMake
2. 添加MinGW編譯器, 以64位為例,注意ABI設(shè)置
3.添加一個Kit (編譯的工具鏈?),可以選擇gdb,我沒有添加Qt。 這里也可以創(chuàng)建msvc的編譯鏈
使用吧
創(chuàng)建一個新項目,Non-Qt Project --> Plain C++ Project(CMake Build).
項目使用cmake的CMakelists.txt, 讓cmake生成目標編譯器的makefile,進行編譯.
默認g++沒有打開c++11和debug的支持, 所以添加如下到CMakelists.txt
SET(CMAKE_CXX_FLAGS "-std=c++11 -g")
測試代碼
#include <iostream>
#include <vector>
#include <iterator>
template<typename T>
void variableTemplates(const T & last)
{
std::cout << last << std::endl;
}
template<typename T, typename ...Args>
void variableTemplates(const T & firstArg, Args... args)
{
std::cout << firstArg << ' ';
variableTemplates(args...);
}
int main()
{
std::vector<double> floats{1.0, 2.0, 3.0, 4.0};
std::copy(std::begin(floats), std::end(floats), std::ostream_iterator<double>(std::cout, " "));
std::cout << std::endl;
for (auto f : floats)
{
std::cout << f * f << ' ';
}
std::cout << std::endl;
const char * str =
R"(test raw string
with multiline text
and escape characters \t \a \b)";
std::cout << str << std::endl;
variableTemplates<double, double, double>(2.1, 2.3, 2.4);
return 0;
}
輸出
Starting P:\temp_project\testMinGW64-build\testMinGW64.exe...
1 2 3 4
1 4 9 16
test raw string
with multiline text
and escape characters \t \a \b
2.1 2.3 2.4
P:\temp_project\testMinGW64-build\testMinGW64.exe exited with code 0