Autor Wątek: Środowisko do nowoczesnego C++ [IDE + kompilator]  (Przeczytany 5506 razy)

Offline mawpa

  • Użytkownik

# Marzec 21, 2015, 14:39:58
Witam.

Przed chwilą spróbowałem skompilować w ostatnim (ciężko je nazwać najnowszym) MinGW/GCC poniższy kod:
Kod: (cpp) [Zaznacz]
#include <iostream>
#include <string>
using namespace std;

int main()
{
  string converted = to_string(12345);

  for(char c : converted)
    cout << c <<'\n';

  return 0;
}

Kod się nie kompilował, spróbowałem więc skompilować przykład stąd.
W obu przypadkach kompilator krzyknął, że nie zna czegoś takiego jak to_string, który przecież pojawił się już w C++11. Okazuje się, że ostatnia wersja MinGW/GCC zatrzymała się na niepełnym wsparciu dla C++11. Smutne.

Ale do rzeczy.

Wobec tak kiepskiego wsparcia dla najnowszego standardu języka stoję przed kwestią wyboru kompilatora, który będzie generował output porównywalny jakościowo z tym, który generuje MinGW/GCC przy jednoczesnym, najlepiej pełnym, wsparciu dla C++14.

A skoro już postanawiam zmieniać kompilator, to czemu nie zmienić IDE na nieco bardziej inteligentne? Miło byłoby zobaczyć coś, co będzie proste i lekkie jak Code::Blocks (przyjemne zarządzanie projektami i możliwość kompilacji pojedynczych plików) z kilkoma magicznymi feature'ami dostępnymi w IDE dla Javy, jak np. IntelliJ czy Eclipse (automatyczne include'y, podkreślanie błędów itp.).

Idealnym rozwiązaniem byłoby IDE działające OOTB z kompilatorem, który zapewnia pełne wsparcie dla C++14, ale oczywiście nie spodziewam się, że coś takiego istnieje. Jakieś propozycje?

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Raptor

  • Użytkownik

# Marzec 21, 2015, 14:49:57
Co rozumiesz przez ostatnie MinGW/GCC? Czy to_string działał pod 4.8.x to głowy nie dam sobie uciąć, ale pod każdym 4.9.x działa bez problemu. Może jednak stara wersja? Albo nieumiejętność skonfigurowania projektu? :P

Offline lethern

  • Użytkownik

# Marzec 21, 2015, 15:30:02
nie ma IDE dla c++ porównywalnych do IDE Javowców
choć jeśli dla Ciebie "podkreślanie błędów" jest magicznym feature, to zastanawiam się z czego korzystałeś, z notatnika?
nie wiem jak nadganiają z implementacją standardów, ale Visual Studio
« Ostatnia zmiana: Marzec 21, 2015, 15:32:00 wysłana przez lethern »

Offline mawpa

  • Użytkownik

# Marzec 21, 2015, 15:39:17
@Krzysztof5: przez ostatnie MinGW/GCC rozumiem wersję dostępną oficjalnie na mingw.org, czyli ściągniętą stąd z paczkami 4.8.1-4 (nowszych nie widać). Przed chwilą ściągnąłem to (tutaj są paczki 4.9.2, czyli powinno działać) i teraz walczę z Code::Blocksem, żeby mi to wykrył.

@lethern: powinienem ująć "magiczne" w cudzysłowy ;)

Offline karol57

  • Użytkownik

# Marzec 21, 2015, 15:42:13
Jako IDE to od siebie mogę polecić Qt Creator. Fakt, trochę trzeba się nagimnastykować aby dobrze je skonfigurować (w najprostszejnormalnej wersji trzeba zbudować Qt pod swój kompilator oraz GDB z obsługą pythona, chociaż GDB chyba można znaleźć w sieci), nie jest może najlepsze, ale dla mnie wszystko jest na poziomie co najmniej średnim/dobrym.
VS wprawdzie ma sporo rzeczy na świetnym poziomie, to niestety ważna dla mnie część jest na niedostatecznym (dla mnie dyskwalifikuje go brak 100% obsługi C++11).
« Ostatnia zmiana: Marzec 21, 2015, 15:47:01 wysłana przez karol57 »

Offline Raptor

  • Użytkownik

# Marzec 21, 2015, 16:20:01
Google mówi, że już prawdopobobnie w GCC 4.5 było std::to_string, w 4.8 już na pewno jest. W Code::Blocks, Project - > Build options -> compiler settings - > zaznaczyć opcję "Have g++ follow the C++11 ISO C++ language standard", czyli dodać flagę -std=c++11. Możesz też dodać tę flagę globalnie, w Settings ->  Compiler -> Compiler settings.

Offline mawpa

  • Użytkownik

# Marzec 21, 2015, 17:02:59
Mam ją ustawioną globalnie od momentu, kiedy zainstalowałem Code::Blocksa.
Teraz zainstalowałem C::B na nowo (nightly build), postąpiłem według tego i wszystko działa.

Mimo to chciałbym zebrać opinie na temat różnych IDE. Albo inaczej: jakie cechy powinno wg was mieć dobre IDE do C++?

Offline Zyper

  • Użytkownik

# Marzec 21, 2015, 17:20:06
Nie wiem @mawpa czego Ty tam używasz.
Ale skopiowałem ten Twój kod bez zmian, skompilowałem pod GCC 4.8.3 i wszystko działa bez problemu.
Nie ma jakichś nowszych i działających paczek dla MinGW?

Offline aphity

  • Użytkownik

  • +1
# Marzec 21, 2015, 17:26:28
Co do kompilatora, to niestety, dopiero nadchodzące GCC 5 będzie miało pełne wsparcie C++11 (wliczając bibliotekę standardową). Dobrym kompilatorem wspierającym C++14 jest Clang.

O aktualnie dostępnych IDE się nie wypowiem, bo od dawna już przestałem liczyć, że znajdę jakieś dobre i zadowalam się edytorami. Pamiętam jednak, że gdy kilka lat temu próbowałem różnych srodowisk, najlepsze wrażenie, gdy chodzi o ficzery, sprawiał Eclipse CDT. Porzuciłem je jednak z uwagi na charakterystyczne silne obciążenie systemu.

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Marzec 21, 2015, 17:48:19
Cytuj
nie ma IDE dla c++ porównywalnych do IDE Javowców
Niestety. Wszystkie IDE dla C++ działają dużo szybciej. ;)

Cytuj
VS wprawdzie ma sporo rzeczy na świetnym poziomie, to niestety ważna dla mnie część jest na niedostatecznym (dla mnie dyskwalifikuje go brak 100% obsługi C++11).
Można zawsze go używać jako IDE (a nie kompilator). Jedyny minus to brak debuggera.

Offline BrunonDEV

  • Użytkownik
    • Construgia -- RPG

# Marzec 21, 2015, 23:07:26
Ale w MSVC 2010 (i chyba w innych też) jest debugger...

Offline 10log

  • Użytkownik

# Marzec 21, 2015, 23:34:07
Jeśli chodzi o IDE to Jetbrains mają w ofercie CLion https://www.jetbrains.com/clion/.
Mi jakoś ich produkty nie bardzo pasują. Przynajmniej jeśli chodzi o Android Studio. Może się jeszcze nie przyzwyczaiłem ale ciągle wolę pisać na andka pod Eclipsem.

A jeśli chcesz coś naprawdę szybkiego i lekkiego to niektórzy polecają vi :).

Offline karol57

  • Użytkownik

# Marzec 21, 2015, 23:48:50
Można zawsze go używać jako IDE (a nie kompilator). Jedyny minus to brak debuggera.
Mówiąc o braku obsługi C++11 miałem na myśli również IDE, a nie tylko kompilator. Zmiana kompilatora sprawi tylko tyle że kod się będzie kompilował, natomiast wszystkie bajery się posypią w wiekszym projekcie, ponieważ połowa kodu jest dla IDE niezrozumiała. Dodatkowo mamy okienko z błędami zasrane przez IntelliCośTam.

@BrunonDEV Debugger Visuala potrzebuje definicji symboli w pliku pdb którego inny kompilator ci nie wygeneruje.

Swoją drogą widziałem że można Visuala zmusić zarówno do pracy z GDB.

@Offtop: Ja rozumiem że kodzenie kompilatora i IDE nie jest rzeczą prostą, ale brak obsługi standardów (i to dość starych już) w programie za kilka tyś. PLN jest po prostu chamstwem. Miałem nadzieję że VS 2015 będzie obsługiwał (chociaż) cały C++11, ale nie - bo po co?

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Marzec 22, 2015, 01:24:20
Ale w MSVC 2010 (i chyba w innych też) jest debugger...
... który działa pod warunkiem korzystania z kompilatora konkretnego IDE. A jeżeli IDE służy nam tylko do klepania kodu i resztę robimy przez makefile lub inne skrypty, to z debugera nici.

Cytuj
@Offtop: Ja rozumiem że kodzenie kompilatora i IDE nie jest rzeczą prostą, ale brak obsługi standardów (i to dość starych już) w programie za kilka tyś. PLN jest po prostu chamstwem. Miałem nadzieję że VS 2015 będzie obsługiwał (chociaż) cały C++11, ale nie - bo po co?
Zależy od wersji - ja jadę na darmowym VS 2013 Community, więc stosunek jakości do ceny jest jak nabardziej korzystny. ;)


Inna kwestia, że z ładowaniem się w C++11, a dalsze tym bardziej moim zdaniem jest jeszcze nieco wcześnie. Widać jak różne kompilatory sobie "radzą" z nowymi standardami i używając nowych bajerów łatwo władować się w coś nieprzenośnego. Ot, wystarczy jakaś platforma z SDK na starej wersji GCC i klops. A tak to pisząc w C++ z okresu późnego średniowiecza dodanie kompletnie nowej platformy do frameworka można załatwić w jeden wieczór - bo np. tyle zajęło mi skompilowanie C++owego frameworka pod asm.js (Web/JavaScript).

Offline Xion

  • Redaktor
    • xion.log

# Marzec 22, 2015, 04:16:56
Cytuj
A jeżeli IDE służy nam tylko do klepania kodu i resztę robimy przez makefile lub inne skrypty, to z debugera nici.
Uhm, jestem prawie pewien, że VS obsługuje jakąś formę remote debugging. Inaczej ciężko byłoby je nazwać "IDE"...