Jeżeli chce ktoś korzystać z wyrażeń typu lambda, move semantics lub auto w Code::Blocks 16.01, może przyjrzeć się nowością jakie niesie ze sobą standard C++14.
Poniżej opisałem konfiguracje Code::Blocks'a 16.01 z tdm-gcc-5.1.0-3 na platformę Windows XP 32bit.
1. Pobierz tdm-gcc-5.1.0-3 z http://tdm-gcc.tdragon.net/download
2. Wyodrębnij pliki np. do folderu C:\MinGW
3. Otworzyć Code::Blocks'a
4. Z menu na górze wybrać Settings => Compiler
5. Przejść na kartę (zakładkę) “Toolchain Executables”
6. W górnym polu “Compiler’s installation directory”, zmienić na C:\MinGW
7. Zmienić należy też wszystkie niezbędne pliki w poniższym polu "Program Files”
na pliki, które znajdują się w folderze C:\MinGW\bin:
- C compiler: gcc.exe
- C++ compiler: g++.exe
- Linker for dynamic libs: g++.exe
- Linker for static libs: ar:exe
- Debugger zostawiamy domyślnie tak jak jest
- Resource compiler: windres.exe
- Make program : make.exe
8. Zanim naciśniesz "OK", przejdź do lewej karty “Compiler settings”.
9. Wybrać kartę "Compiler Flags”
10. Kliknij prawym przyciskiem myszy na liście i wybierz "New Flag":
11. W okienuk które się pojawi wpisz następujące dane
- Name: Enable C++14 flag
- Compiler flags: -std=c++14
- Category: Warnings
- Supersedes: -std=c++98 -std=c++0x -std=c++11
Pozostałe pola których nie wymieniłem pozostają puste.
Kliknij "OK", a następnie zaznacz pole flagi, którą właśnie utworzyłeś:
12. Na koniec musisz określić ścieżkę debuggera.
Przejdź do "Settings" => "Debugger", zaznacz z lewej strony "Defualt"
i w polu Executable path: wprpwadź ścieżkę lub wybierz
Executable path: C:\MinGW\bin\gdb32.exe
Kliknij O.K.
Teraz spróbuj skompilować program z funkcjami C++14:
#include <iostream>
#include <string>
using namespace std;
auto dodaj( auto a, auto b )
{
return a + b;
}
int main()
{
string napis1 = "To, co wiemy, jest kropla, ";
string napis2 = "a to, czego nie wiemy morzem.";
cout << dodaj( napis1, napis2 ) << endl;
cout << endl;
int x = 20, y = 1;
auto funkcja =[]( auto a, auto b )->auto { return a + b; };
cout << "funkcja(x, y) x = " << x << ", y = " << y << " = " << funkcja( x, y ) << endl;
cout << endl;
double m = 3.14;
double n = 7.11;
cout << "dodaj(m,n) m = " << m << ", n = " << n << " = " << dodaj( m, n ) << endl;
return 0;
}