C ++ IDE dla systemu Linux? [Zamknięte]

209

Chcę rozszerzyć swoje horyzonty programistyczne na system Linux. Dobry, niezawodny podstawowy zestaw narzędzi jest ważny, a co jest bardziej podstawowe niż IDE?

Mogę znaleźć te tematy SO:

Nie szukam lekkiego IDE. Jeśli IDE jest warte swojej ceny, zapłacę za to, więc nie musi być darmowy.

Moje pytanie to:

Co dobrego, programowanie w C ++ IDE jest dostępne dla Linuksa?

Minimalne wartości są dość standardowe: podświetlanie składni, uzupełnianie kodu (jak intellisense lub jego odpowiednik Eclipse) i zintegrowane debugowanie (np. Podstawowe punkty przerwania).

Sam go szukałem, ale jest ich tak wiele, że prawie niemożliwe jest ręczne oddzielenie dobra od zła, szczególnie dla kogoś takiego jak ja, który ma niewielkie doświadczenie w kodowaniu C ++ w Linuksie. Wiem, że Eclipse obsługuje C ++ i bardzo podoba mi się to IDE dla Javy, ale czy jest on dobry dla C ++ i czy jest coś lepszego?

Drugi post faktycznie zawiera kilka dobrych sugestii, ale brakuje mi tego, co dokładnie sprawia, że ​​sugerowane IDE jest tak dobre dla użytkownika, jakie są jego (nie) zalety?

Może zatem moje pytanie powinno brzmieć:

Jakie IDE proponujesz (biorąc pod uwagę twoje doświadczenia) i dlaczego?

Peter Mortensen
źródło
1
To chyba czwarte pytanie „Jakiego IDE powinienem używać w Linuksie” za dzień lub dwa.
Ben Collins,
Może powinieneś spojrzeć na datę, w której pytanie zostało zadane ... lub wskazać tutaj nowsze pytania
sven
W ostatnim wydaniu Eclipse zintegrował eclipse.org/linuxtools ze swoim ciągiem wydań - ten projekt ma na celu uczynienie Eclipse pełnoprawnym IDE C / C ++ w Linuksie poprzez integrację narzędzi specyficznych dla Linuksa.
Jean Hominal

Odpowiedzi:

259

Początkowo: zamieszanie

Kiedy pisałem tę odpowiedź, niedawno przeniosłem się z Visual Studio (z wieloletnim doświadczeniem) do Linuksa i pierwszą rzeczą, jaką zrobiłem, było znalezienie rozsądnego IDE. W tym czasie było to niemożliwe: nie istniało dobre IDE.

Objawienie Pańskie: UNIX jest IDE. Wszystko. 1

I wtedy zdałem sobie sprawę, że IDE w Linuksie jest wierszem poleceń z jego narzędziami:

  • Najpierw skonfiguruj swoją powłokę
  • i twój redaktor; wybierz swoją truciznę - oba są najnowocześniejsze:

W zależności od potrzeb będziesz musiał zainstalować i skonfigurować kilka wtyczek, aby edytor działał poprawnie (to jedna irytująca część). Na przykład większość programistów w Vimie skorzysta z wtyczki YouCompleteMe do inteligentnego autouzupełniania.

Po wykonaniu tej czynności powłoka jest interfejsem poleceń umożliwiającym interakcję z różnymi narzędziami - debuggerami (gdb), profilami (gprof, valgrind) itp. Skonfigurujesz środowisko projektu / kompilacji za pomocą Make , CMake , SnakeMake lub dowolnego z różnych alternatywy A ty zarządzasz swoim kodem za pomocą systemu kontroli wersji (większość ludzi używa Git ). Używasz także tmux (wcześniej także screen) do multipleksowania (= pomyśl o wielu oknach / kartach / panelach) i utrwalania sesji terminalu.

Chodzi o to, że dzięki powłoce i kilku konwencjom pisania narzędzi wszystkie one się ze sobą integrują . I w ten sposób powłoka Linuxa jest naprawdę zintegrowanym środowiskiem programistycznym , całkowicie na równi z innymi nowoczesnymi IDE. (Nie oznacza to, że poszczególne IDE nie mają funkcji, których może brakować w linii poleceń, ale odwrotność jest również prawdą.)

Do każdego własnego

Nie potrafię przecenić, jak dobrze powyższy obieg pracy działa, gdy już przyzwyczaisz się. Ale niektórzy ludzie po prostu wolą edytory graficzne, a od czasu, gdy pierwotnie napisano tę odpowiedź, Linux zyskał pakiet doskonałych graficznych IDE dla kilku różnych języków programowania (ale, o ile mi wiadomo, dla C ++). Spróbuj, nawet jeśli - tak jak ja - nie będziesz ich używać. Oto tylko mały i stronniczy wybór:

  • W przypadku rozwoju Python istnieje PyCharm
  • Dla R istnieje RStudio
  • W przypadku JavaScript i TypeScript istnieje Visual Studio Code (który jest również dobrym wszechstronnym edytorem)
  • I wreszcie, wiele osób uwielbia edytor Sublime Text do ogólnej edycji kodu.

Pamiętaj, że ta lista nie jest jeszcze pełna.


1 Ukradłem ten tytuł z komentarza dsm.

2 Kiedyś odnosiłem się do Vima tutaj. I chociaż zwykły Vim jest jeszcze bardziej niż zdolny, Neovim jest obiecującym wznowieniem i zmodernizował kilka starych brodawek.

Konrad Rudolph
źródło
223
Zdecydowanie się nie zgadzam. przyzwoity ide jest ważny bez względu na to, nad czym pracujesz. drastycznie zwiększa wydajność. używam bloków kodu i stwierdzam, że powrót do VI jest prawie niemożliwy. kodowałem na Macu, Win i Linuksie i chociaż uważam, że studio graficzne jest najlepszym IDE, bloki kodu są bliskie.
DavidG
35
David, być może mógłbyś szczegółowo opisać (własną odpowiedź…), czego dokładnie brakuje w łańcuchu narzędzi, który opisałem, że dostarcza IDE. Jak powiedziałem, pochodzę z silnego środowiska IDE, a mój wzrost wydajności był dokładnie odwrotny do twojego.
Konrad Rudolph
48
Jakie wsparcie refaktoryzacyjne oferuje Vim? W Eclipse (działającym pod Linuksem) mogę zmienić nazwę dowolnej metody Java, którą chcę, nawet jeśli jest ona wywoływana w 300 miejscach. Czy możesz to zrobić łatwo w Vimie?
quant_dev
25
quant_dev: refaktoryzacja wymaga w jakiś sposób parsowania kodu źródłowego. O ile wiem, żaden moduł VIM tego nie robi, więc odpowiedź na twoje pytanie brzmi „brak”. To jeden z powodów, dla których preferuje się IDE dla języków skoncentrowanych na IDE, takich jak Java. Ponieważ obsługa refaktoryzacji (itp.) Dla C ++ jest tak minimalna (nawet w IDE), nie dotyczy to C ++.
Konrad Rudolph
11
@hasen: och, ale duże części mogą . Na przykład zmiana nazwy uwzględniająca zakres. I uwierz mi, to jest duże . A Ecplise (np.) Może tutaj zaoszczędzić dużo pracy.
Konrad Rudolph,
86

Moim osobistym faworytem jest CodeLite 2.x IDE.

patrz: http://www.codelite.org

Decyzja o użyciu CodeLite została oparta na badaniu dotyczącym następującego środowiska C ++ IDE dla systemu Linux:

  • Eclipse Galileo z wtyczką CDT
  • NetBeans 6.7 (który jest również bazą dla SunStudio IDE)
  • KDevelop4
  • CodeBlocks 8.02
  • CodeLite 2.x

Mimo wszystko zdecydowałem się użyć codelite 2.x .

Poniżej wymieniłem niektóre zalety i wady dotyczące wspomnianych IDE C ++. Pamiętaj, że odzwierciedla to tylko moją osobistą opinię!

EDYCJA : szkoda, że ​​SOF nie obsługuje tabel, więc muszę pisać w akapitach ...

Eclipse Galileo z wtyczką CDT

Plusy:

  • rozsądnie szybko
  • obsługuje także Java, Perl (z wtyczką EPIC)
  • powszechnie używane i dobrze utrzymane
  • dostępne również dla innych wersji systemu operacyjnego (Windows, MacOS, Solaris, AIX (?))

Cons:

  • GUI jest bardzo mylące i nieco niespójne - wcale nie bardzo intuicyjne
  • duża waga
  • Obsługuje tylko CVS (AFAIK)

NetBeans 6.7 (zwróć uwagę, że jest to również podstawa dla SunStudio IDE)

Plusy:

  • jeden z najbardziej intuicyjnych GUI, jakie kiedykolwiek widziałem
  • obsługuje także Java, Python, Ruby
  • integruje CVS, SVN, Mercurial
  • powszechnie używane i dobrze utrzymane
  • dostępne również dla innych wersji systemu operacyjnego (Windows, MacOS, Solaris)

Cons:

  • wyjątkowo wolny
  • duża waga
  • używa spacji do wcięć, co nie jest zasadą w mojej pracy. Jestem pewien, że można to skonfigurować, ale nie mogłem się dowiedzieć, jak to zrobić

KDevelop4 (uwaga: nie testowałem na nim zbyt wiele)

Plusy:

  • powszechnie używane w systemie Linux
  • integruje CVS, SVN, Mercurial

Cons:

  • GUI wygląda nieco staromodnie
  • duża waga
  • bardzo specyficzne dla środowiska KDE

CodeBlocks 8.02 (uwaga: nie testowałem dużo na nim)

Plusy:

  • rozsądnie szybko

Cons:

  • GUI wygląda nieco staromodnie (chociaż ma ładny ekran startowy)
  • czcionki w edytorze są bardzo małe
  • niektóre ikony (np. ikony związane z debugowaniem rozpoczynające / przechodzące) są bardzo małe
  • brak integracji kontroli źródła

CodeLite 2.x (uwaga: to mój osobisty faworyt)

Plusy:

  • najlepszy, nowocześnie wyglądający i intuicyjny graficzny interfejs użytkownika, jaki widziałem w systemie Linux
  • lekki
  • rozsądnie szybko
  • integruje SVN
  • dostępny również w innych wersjach systemu operacyjnego (Windows, MacOS, Solaris (?))

Cons:

  • brak integracji CVS (to dla mnie ważne, ponieważ muszę go używać w pracy)
  • brak wsparcia dla Java, Perl, Python (byłoby miło mieć)
anon
źródło
14
Eclispe obsługuje Hg, Git, SVN i inne za pośrednictwem wtyczek. A ekrany startowe / powitalne ssają ogromne kule. Pochłaniają zasoby i oferują bardzo niewiele korzyści. I zwykle pojawiają się przed wszystkim, nad czym pracuję, czekając na załadowanie aplikacji. PortableApps i Eclipse muszą się ich pozbyć.
Chris K
4
Codelite ma ten sam skrót klawiaturowy co Visual Studio do debugowania, dzięki czemu jest bardzo przyjazny dla osób uzależnionych od Visual.
Raoul Supercopter
Może pobić tutaj starego konia, ale GUI zaćmienia IMO jest naprawdę niezrównane. Tak, na początku trudno się go nauczyć, ale to trochę jak Vi, gdzie wydajność zaczyna gwałtownie rosnąć po tym, jak wspinasz się po stromej krzywej uczenia się. Aby to udowodnić, naciśnij Ctrl + 3 - jedna z niesamowitych funkcji IMO zaćmienia.
kizzx2
„Wady: używa spacji do wcięcia [...] Jestem pewien, że można to skonfigurować, ale nie mogłem się tego dowiedzieć”. To pokazuje, że tak naprawdę nie używałeś narzędzi, w przeciwnym razie w końcu znalazłbyś opcję.
Johan Boulé,
5
CodeLite jest niesamowity, jak żucie gumy lodowej Dentyne. Pozostawi świeży i miętowy smak w ustach. Zaćmienie, choć jest funkcjonalne, daje ci również wymioty po smaku, gdy go używasz. Wiem, że to brzmi dziecinnie, ale to naprawdę najlepsza metafora do wyjaśnienia „odczucia” ich używania. Jestem pewien, że inni się ze mną zgodzą.
Didier A.
75
  1. Code :: Blocks
  2. Eclipse CDT

Wkrótce przekonasz się, że IDE to za mało i będziesz musiał nauczyć się łańcucha narzędzi GCC (co nie jest trudne, przynajmniej poznanie podstawowej funkcjonalności). Ale bez szkody dla zmniejszenia przejściowego bólu z IDE, IMO.

Imran
źródło
+1 dla bloków kodu i tak, na pewno będziesz chciał nauczyć się przynajmniej jak kompilować i uruchamiać swoje programy z powłoki, ponieważ code :: blocks ma pewne niedociągnięcia.
Earlz
Zaćmienie wcale nie jest lekkie IMHO, Code :: Blocks ... tylko
rubenvb
7
-1 dla bloków kodu. -1 dla zaćmienia. Obaj zmieniają interfejs podczas debugowania. Do tego stopnia, że ​​początkujący użytkownik zwykle czuje się zagubiony. Obaj nie mogą debugować widelca. Obaj mają paskudne problemy z integracją SVN / CVS. (Najnowsze Eclipse w tandemie z Subclipse jest uszkodzone w Gnome od 28.04.11 i ulega awarii co 10 minut). Konfiguracja kontroli źródła jest koszmarem, a integracja z tymi IDE jest równie trudna.
bleepzter
4
@bleepzter -1 za używanie SVN / CVS na początek;)
OneOfOne,
1
Mercurial, Git i Bazaar, które są znacznie lepsze pod każdym względem.
OneOfOne,
66

Szybka odpowiedź, aby dodać trochę więcej wiedzy do tego tematu:
Zdecydowanie musisz sprawdzić NetBeans . Netbeans 6.7 ma następujące funkcje:

  • Projekty i szablony C / C ++: Obsługuje podświetlanie składni, automatyczne uzupełnianie kodu, automatyczne wcięcie.
  • Ma debugger C / C ++
  • Obsługuje konfiguracje kompilatora, Menedżera konfiguracji i obsługę plików Makefile (z kreatorem).
  • Ma okno klas, okno użycia i okno nawigacji pliku (lub panel).
  • Makro widok ekspansji , a także podpowiedzi .
  • Wsparcie dla rozwoju QT .

Myślę, że jest to idealne (i znacznie lepsze) podstawienie Visual Studio i bardzo dobre narzędzie do nauki C / C ++.

Powodzenia!

ramayac
źródło
2
Jest to również bardzo dobre dla c ++. Ma najlepszy parser języka.
Johan Boulé,
1
Netbeans lubiłem znacznie więcej niż Eclipse do programowania w C ++.
Thomas Langston,
9
NetBeans jest o wiele bardziej przyjemny niż Eclipse, naprawdę chciałbym, żeby więcej ludzi zaczęło to rozumieć.
Didier A.
1
Po tygodniach walki z Eclipse znalazłem to, przełączyłem się na NetBeans i dziękuję! Ma ładniejszy interfejs, jest bardziej responsywny, intuicyjny i można go dostosowywać. Uderza w Eclipse
Frederik
1
Kolejny głos tutaj o ile lepszy jest NetBeans niż Eclipse. Ma też zdecydowanie najlepszą emulację Vima (jako wtyczkę), jakiej kiedykolwiek używałem.
thinkton
52

Przynajmniej w przypadku konkretnych projektów Qt, Qt Creator (od Nokia / Trolltech / Digia) pokazuje wielką obietnicę.

Henrik Hartz
źródło
10
Używam go również w projektach innych niż Qt.
Szansa
To jest miłe. Próbowałem i bardzo mi się podobało.
Tyler Long,
32

czy mógłbyś wyjaśnić nieco więcej, jak to było dla ciebie, co musiałeś zmienić? Może mógłbyś wskazać mi właściwy kierunek, podając linki do użytych informacji.

Moje pierwsze źródło to tak naprawdę strony narzędzi man. Po prostu wpisz

$ man toolname

w wierszu poleceń ( $tutaj jest część wiersza, a nie dane wejściowe).

W zależności od platformy są one dość dobrze napisane i można je również znaleźć w Internecie. W przypadku makefaktycznie przeczytałem pełną dokumentację, która zajęła kilka godzin. Właściwie nie sądzę, że jest to konieczne lub pomocne w większości przypadków, ale miałem kilka specjalnych wymagań w moich pierwszych zadaniach pod Linuksem, które wymagały wyrafinowanego makefile. Po napisaniu pliku makefile podałem go doświadczonemu koledze, który dokonał drobnych poprawek i poprawek. Po tym prawie wiedziałem make.

Korzystałem z GVIM, ponieważ miałem trochę (ale niewiele) wcześniejszych doświadczeń, nie mogę nic powiedzieć o Emacsie ani alternatywach. Uważam, że naprawdę pomaga odczytać .gvimrcplik konfiguracyjny innych ludzi . Wiele osób umieszcza go w Internecie. Oto moje .

Nie próbuj opanować wszystkich binutils naraz, jest zbyt wiele funkcji. Ale uzyskaj ogólny przegląd, abyś wiedział, gdzie szukać, gdy będziesz czegoś potrzebować w przyszłości. Państwo powinno jednak znać wszystkie ważne parametry g++i ld(narzędzie Łącznik GCC, który jest wywoływany automatycznie z wyjątkiem gdy wyraźnie zapobiec).

Ciekawe też, czy masz uzupełnianie kodu i podświetlanie składni podczas kodowania?

Podświetlanie składni: tak, i znacznie lepsze niż Visual Studio. Zakończenie Kod: yes- owski . Po pierwsze muszę przyznać, że nie użyłem uzupełniania kodu C ++ nawet w Visual Studio, ponieważ (w porównaniu do VB i C #) nie było wystarczająco dobre. Teraz nie używam go często, ale GVIM ma wbudowaną obsługę uzupełniania kodu w C ++. W połączeniu z biblioteką ctags i podobną do wtyczki taglistą jest to prawie IDE.

Zacząłem od artykułu Armina Ronachera. Przed przeczytaniem tekstu spójrz na zrzuty ekranu na jego końcu!

czy musisz najpierw skompilować, zanim pojawią się błędy (składniowe)?

Tak. Ale to samo dotyczy Visual Studio, prawda (nigdy nie korzystałem z całego pomidora)? Oczywiście podświetlanie składni pokaże niepasujące nawiasy kwadratowe, ale to wszystko.

i jak debugujesz (ponownie myślę o punktach przerwania itp.)?

Używam, gdbktóre jest narzędziem wiersza polecenia. Istnieje również graficzny interfejs o nazwie DDD. gdbjest nowoczesnym narzędziem do debugowania i może zrobić wszystko, co możesz zrobić w środowisku IDE. Jedyną rzeczą, która naprawdę mnie denerwuje, jest czytanie śladu stosu, ponieważ linie nie są wcięte ani sformatowane, więc bardzo trudno jest zeskanować informacje, gdy używasz wielu szablonów (co robię). Ale te również zaśmiecają ślad stosu w IDE.

Tak jak powiedziałem, miałem przyjemność „stawiać pierwsze kroki w języku programowania Java za pomocą notatnika w systemie Windows i kompilatora java z wiersza poleceń w liceum, i to był… wel koszmar! z pewnością kiedy mogłem porównać to z innymi kursami programowania, które miałem wtedy, gdzie mieliśmy przyzwoite IDE

Nie powinieneś nawet próbować porównywać nowoczesnego, w pełni funkcjonalnego edytora, takiego jak Emacs lub GVIM, z Notatnikiem. Notatnik jest ozdobą TextBox, a to naprawdę robi różnicę. Ponadto praca w wierszu poleceń jest zupełnie innym doświadczeniem w systemach Linux i Windows. Windows cmd.exejest poważnie uszkodzony. PowerShell jest znacznie lepszy.

/ EDYCJA: Powinienem wyraźnie wspomnieć, że GVIM ma edytowanie na kartach (jak podczas przeglądania na kartach, a nie tab-tab -spacje)! Znalezienie ich zajęło mi wieki, chociaż wcale nie są ukryte. Po prostu wpisz :tabezamiast zwykłego :epodczas otwierania pliku lub tworzenia nowego, a GVIM utworzy nową kartę. Przełączanie między kartami można wykonywać za pomocą kursora lub kilku różnych skrótów (w zależności od platformy). Klawisz gt(wpisz g, a następnie tw trybie komend) powinien działać wszędzie i przeskakuje do następnej karty lub karty nr. n jeśli podano numer. Wpisz, :help gtaby uzyskać więcej pomocy.

Konrad Rudolph
źródło
@confuzatron: Nie, używam gdb z kilku powodów. Co najważniejsze, zwykle pracuję bez uruchomionego serwera X. Poza tym jestem trochę niewygodny z powodu faktu, że DDD nie widział żadnej aktualizacji od dłuższego czasu. Z drugiej strony własność projektu właśnie się zmieniła i wydaje się, że nastąpiły zmiany.
Konrad Rudolph
Dzięki za informacje o karcie wrt gvim, nigdy nie nowe :)
Letholdrus
VS2010 wyróżnia błędy składniowe bez kompilacji.
Candy Chiu,
@Candy prawda, VS2010 zmienił wiele rzeczy w tym zakresie i dodał zaawansowane funkcje kompilacji w tle. Tymczasem gvim dodał także wiele funkcji za pośrednictwem wtyczek. W szczególności teraz możesz prawdopodobnie wyróżnić błąd składni bez kompilacji za pośrednictwem clang_completewtyczki. Ta odpowiedź pochodzi z 2009 roku, a niektóre części są nieaktualne. Ale zostały wprowadzone ulepszenia ze wszystkich stron, więc mniej więcej się wyrównuje.
Konrad Rudolph,
25

Nie powtarzam odpowiedzi, ale myślę, że mogę dodać trochę więcej.

Slickedit to doskonałe IDE.

Obsługuje dobrze duże bazy kodu bez spowalniania lub poświęcania całego czasu na indeksowanie. (Jest to problem, który miałem z cdt Eclipse). Szybkość Slickedit jest prawdopodobnie najprzyjemniejszą rzeczą w tym.
Uzupełnianie kodu działa dobrze i istnieje wiele opcji takich jak automatyczne formatowanie, upiększanie i refaktoryzacja.
Ma zintegrowane debugowanie.
Ma obsługę wtyczek i dość aktywną społeczność, która je tworzy.
Teoretycznie powinieneś być w stanie dobrze zintegrować się z ludźmi wykonującymi tradycyjne operacje na plikach makefile, ponieważ pozwala to na tworzenie projektu bezpośrednio z jednego, ale nie działało to tak płynnie, jak bym chciał, kiedy go wypróbowałem.
Oprócz Linuksa istnieją wersje dla komputerów Mac i Windows, jeśli są potrzebne.

rck
źródło
23

Jako dawny gość w systemie UNIX zawsze używam Emacsa. Ale to ma dość stromą i długą krzywą uczenia się, więc nie jestem pewien, czy mogę go polecić początkującym.

Naprawdę nie ma „dobrego” IDE dla Linuksa. Zaćmienie nie jest bardzo dobre dla C / C ++ (CDT poprawia się, ale nie jest jeszcze bardzo przydatne). W pozostałych brakuje wszystkich funkcji, których będziesz szukał.

Naprawdę ważne jest, aby dowiedzieć się, jak działają wszystkie poszczególne narzędzia (gcc, make, gdb itp.). Po wykonaniu tej czynności program Visual Studio może być bardzo ograniczający.

Kristopher Johnson
źródło
Eclipse CDT „nie jest jeszcze bardzo przydatny?” Opracowanie byłoby pomocne. Uważam, że jest to bardzo przydatne (i łatwe w użyciu).
John Zwinck,
„jeszcze niezbyt przydatne”: autouzupełnianie często nie działa, nawigacja do deklaracji lub zastosowań funkcji nie działa, podświetlanie składni nie zawsze działa, refaktoryzacja nie działa itp. Jest to trochę lepsze niż używanie vi. Interfejs użytkownika GDB jest jedyną rzeczą, która sprawia, że ​​warto go w ogóle używać, IMHO.
Kristopher Johnson
Tak naprawdę nie próbowałem refaktoryzacji z CDT, ale inne rzeczy wydają się działać. Zwrócę uwagę, że uruchamiam Eclipse z kilkoma dość dużymi parametrami konfiguracji maksymalnego wykorzystania pamięci (mam 8-12 GB pamięci RAM), ale wydaje się, że jest w porządku.
John Zwinck
Ostatnim razem, gdy próbowałem Eclipse CDT, parser składni / semantyki dla autouzupełniania spowodował zawieszenie całego IDE na 8 sekund przy każdym wywołaniu. Sprawiło, że cała funkcja była bezużyteczna. Nie mogę uwierzyć, że ta rzecz nie działała we własnym wątku. To było dwa lata temu, więc mam nadzieję, że teraz zostało to naprawione. (prawda?)
Uważam, że CDT jest świetny dla moich wypraw do QT i Boost. W Windowsie z Mingw ma problemy, ale w odpowiednim środowisku Posix autouzupełnianie działa świetnie! Nawigacja do deklaracji jest w rzeczywistości jedyną rażącą dziurą. Ale biorąc pod uwagę, że C ++ może mieć wiele identycznych deklaracji, nie jestem zaskoczony. Jest to trudniejszy problem do rozwiązania niż w Javie.
Chris K
18

Kasa Netbeans jest napisana w Javie, więc będziesz mieć takie samo środowisko niezależnie od systemu operacyjnego i obsługuje znacznie więcej niż tylko C ++.

Nie zamierzam cię przekonywać, ponieważ uważam, że IDE może być bardzo osobistym wyborem. Dla mnie poprawia to moją wydajność, ponieważ jest szybki, obsługuje języki, w których koduję, i ma standardowe funkcje, których można oczekiwać od IDE.

Steve M.
źródło
5
Mogę po prostu dodać do tego moje +1. netbeans ma najlepszy parser języka c ++, jaki widziałem w ide; bije cdt eclipse.
Johan Boulé,
18

Krótka odpowiedź na to pytanie ...

Minął miesiąc odkąd zacząłem używać Vima jako mojego głównego narzędzia GUI do programowania C ++ w Linuksie. Początkowo krzywa uczenia się była trochę stroma, ale po pewnym czasie i przy włączonych odpowiednich opcjach i uruchomionych skryptach naprawdę się zorientowałem!

Uwielbiam sposób, w jaki możesz kształtować Vima, dostosowując go do swoich potrzeb; wystarczy dodać / zmienić kluczowe mapowania, a Vim zamieni się w wysoce produktywne „IDE”.

Zestaw narzędzi do budowy i kompilacji programu C ++ w systemie Linux jest również bardzo intuicyjny. make a g ++ są te narzędzia użyjesz.

Debugger ddd nie jest jednak aż tak dobrze, ale może to dlatego, że nie miałem czasu, aby ją opanować prawidłowo.

Tak więc dla każdego, kto jest lub szuka dobrego C ++ IDE w Linuksie, tak jak ja, najlepszym rozwiązaniem są standardowe narzędzia dostępne w samym Linuksie (Vim, g ++, ddd) i powinieneś przynajmniej spróbować użyć ich, zanim szukam sonetowania czegoś innego ...

Na koniec , naprawdę chcę podziękować Konradowi za jego odpowiedź tutaj. Naprawdę pomogło mi to znaleźć drogę w środowisku programistycznym Linux, dziękuję!

Ja też nie zamykając to pytanie, więc ludzie mogą nadal reagować, a może nawet dodać nowe propozycje lub uzupełnienia do już naprawdę ładne odpowiedzi ...

sven
źródło
Czy możesz uzyskać funkcje IntelliSense do pracy w Vim + ctags? Nie tylko automatyczne uzupełnianie, ale informacje kontekstowe, takie jak lista parametrów funkcji itp.?
kizzx2
@ kizzx2: Tak , tam jest wiele opcji .
Fred Nurk
12

Krótsza odpowiedź brzmi: wybierz dowolny „edytor”, który ci się podoba, a następnie użyj konsoli GDB lub prostego interfejsu GDB do debugowania aplikacji. Debugery są wyposażone w fantazyjne środowiska IDE, takie jak Netbeans do C / C ++. Używam Netbeans jako mojego edytora, a Insight i konsoli GDB jako mojego debuggera.

Dzięki wglądowi masz ładny GUI i surową moc GDB.

Jak tylko przyzwyczaisz się do poleceń GDB, zaczniesz go kochać, ponieważ możesz robić rzeczy, których nigdy nie będziesz w stanie zrobić za pomocą GUI. Możesz używać nawet Pythona jako języka skryptowego, jeśli używasz GDB 7 lub nowszej wersji.

Większość ludzi tutaj zwracała większą uwagę na „Redaktorów” IDE. Jeśli jednak opracowujesz duży projekt w C / C ++, możesz łatwo spędzić ponad 70% swojego czasu na „debuggerach”. Debugery fantazyjnych IDE są co najmniej 10 lat za Visual Studio. Na przykład Netbenas ma bardzo podobne interfejsy z Visual Studio. Ale jego debugger ma wiele wad w porównaniu do Visual Studio.

  1. Bardzo wolno wyświetla nawet tablicę zawierającą tylko kilkaset elementów
  2. Brak wyróżnienia dla zmienionej wartości (Domyślnie Visual Studio pokazuje zmienione wartości w oknach zegarka na czerwono)
  3. Bardzo ograniczona zdolność do pokazywania pamięci.
  4. Nie możesz zmodyfikować kodu źródłowego, a następnie kontynuować. Jeśli błąd zajmuje dużo czasu, chcesz zmienić źródło i zastosować zmiany na żywo i kontynuować uruchamianie aplikacji.
  5. Nie można zmienić „następnej instrukcji”, aby uruchomić. W Visual Studio możesz użyć „Ustaw następną instrukcję”, aby zmienić sposób działania aplikacji. Chociaż ta funkcja może spowodować awarię aplikacji, jeśli nie będzie używana prawidłowo, ale pozwoli ci zaoszczędzić dużo czasu. Na przykład jeśli stwierdzisz, że stan aplikacji jest nieprawidłowy, ale nie wiesz, co spowodowało problemy, możesz ponownie uruchomić określony region kodów źródłowych bez ponownego uruchamiania aplikacji.
  6. Brak wbudowanej obsługi STL, takiej jak wektor, lista, deque i mapa itp.
  7. Brak punktów obserwacyjnych. Musisz mieć tę funkcję, gdy musisz zatrzymać aplikację w momencie zmiany zmiennej. Komputery oparte na procesorach Intel mają sprzętowe punkty obserwacyjne, dzięki czemu nie spowalniają systemu. Znalezienie trudnych do znalezienia błędów bez użycia punktów obserwacyjnych może zająć wiele godzin. „Visual Studio” nazywa „wskaźnik oglądania” jako „Data BreakPoint”.

Lista może być znacznie dłuższa.

Byłem tak sfrustrowany wadami Netbeans lub innych podobnych IDE, że zacząłem uczyć się samego GDB. Odkryłem, że sam GDB jest bardzo potężny. GDB nie ma wszystkich „wad” wymienionych powyżej. W rzeczywistości GDB jest bardzo potężny, jest pod wieloma względami nawet lepszy niż Visual Studio. Oto tylko bardzo prosty przykład.

Na przykład masz tablicę taką jak:

struct IdAndValue
{
  int ID;
  int value;
};


IdAndValue IdAndValues[1000];

Kiedy aplikacja się zatrzyma i chcesz sprawdzić dane w IdAndValues. Na przykład jeśli chcesz znaleźć porządki i wartości w tablicy dla konkretnego „ID”, możesz utworzyć skrypt podobny do następującego:

define PrintVal 
set $i=0
printf "ID = %d\n", $arg0
while $i<1000
  if IdAndValues[$i].ID == $arg0
    printf "ordinal = %d, value = %d\n", $i, IdAndValues[$i].vaue
    set $i++
  end
end
end

Możesz użyć wszystkich zmiennych w aplikacji w bieżącym kontekście, własnych zmiennych (w naszym przykładzie jest to $ i), przekazanych argumentów (w naszym przykładzie jest to $ arg0) i wszystkich poleceń GDB (wbudowanych lub zdefiniowanych przez użytkownika ).

Użyj PrintVal 1 z monitu GDB, aby wydrukować wartości dla identyfikatora „1”

Nawiasem mówiąc, NetBeans ma konsolę GDB, ale używając konsoli, możesz zawiesić Netbeans. I wierzę, że właśnie dlatego konsola jest domyślnie ukryta w NetBeans

Charles Zhang
źródło
Słuszna uwaga. Niestety GDB ma bardzo stromą krzywą uczenia się. Używam go od lat i nadal nigdy nie korzystałem z makr, i (choć wiem, że jest to możliwe za pośrednictwem makr!) Żadnego rzucanego przeze mnie kodu STL nie da się lepiej debugować niż w nowoczesnych IDE.
Konrad Rudolph
Spędziłem 2 dni na opanowaniu większości poleceń w GDB. Gdy poznasz surową moc GBD, nigdy nie będziesz oglądać się za siebie. Zaoszczędzisz dużo czasu, gdy naprawisz trudne do znalezienia błędy.
Charles Zhang
11

Używam „ Geany ”, która do tej pory była dobra, jej szybkie i lekkie IDE.

Wśród cech Geany są :

  • Składanie kodu
  • Zapisywanie sesji
  • Podstawowe funkcje IDE, takie jak podświetlanie składni, tabulatory, automatyczne wcięcia i uzupełnianie kodu
  • Proste zarządzanie projektem
  • Zbuduj system
  • Próbnik kolorów (zaskakująco przydatny podczas tworzenia stron internetowych)
  • Emulacja terminalu wbudowanego
  • Wskazówki dotyczące połączeń
  • Listy symboli
  • Automatyczne uzupełnianie popularnych konstrukcji (takich jak if, else, while itp.)
TheCottonSilk
źródło
10

Jeśli podoba Ci się Eclipse dla Java, sugeruję Eclipse CDT. Mimo że obsługa C / C ++ nie jest tak potężna jak w Javie, nadal oferuje większość funkcji. Ma przyjemną funkcję o nazwie Managed Project, która ułatwia pracę z projektami C / C ++, jeśli nie masz doświadczenia z Makefiles. Ale nadal możesz korzystać z Makefiles. Zajmuję się kodowaniem w C i Java i jestem bardzo zadowolony z CDT. Tworzę oprogramowanie układowe dla urządzenia osadzonego w C i aplikacji w Javie, która komunikuje się z tym urządzeniem i naprawdę fajnie jest używać tego samego środowiska dla obu. Myślę, że to prawdopodobnie sprawia, że ​​jestem bardziej produktywny.

Jassuncao
źródło
9

Uwielbiam to, jak ludzie całkowicie pomijają prośbę z pierwotnego pytania o IDE. Linux NIE jest IDE. Nie tylko to oznaczają te słowa. Nauczyłem się c i c ++ używając vi i gcc i make, i nie mówię, że nie są to odpowiednie narzędzia, ale NIE są one IDE. Nawet jeśli używasz bardziej skomplikowanych narzędzi, takich jak vim lub emacs, lub jakiegokolwiek innego fantazyjnego edytora, pisanie poleceń w wierszu poleceń nie jest IDE.

Wszyscy wiecie, że make istnieje jako część studia wizualnego, prawda? Pomysł, że IDE „ogranicza”, jest po prostu głupi, jeśli możesz użyć IDE do przyspieszenia niektórych rzeczy, a mimo to nadal możesz polegać na wierszach poleceń, gdy jest to potrzebne.

Wszystko, co powiedziałem, sugeruję, tak jak kilka powyżej, wypróbowanie bloków kodu. Ma przyzwoite podświetlanie kodu, dość łatwy sposób na stworzenie projektu, zakodowanie go, uruchomienie go itp., Który jest rdzeniem prawdziwego IDE i wydaje się dość stabilny. Debugowanie jest do kitu ... Nigdy nie widziałem porządnego interaktywnego debuggera w żadnym wariancie linuksa / unixa. gdb, prawda? Jeśli jesteś przyzwyczajony do debugowania w studiu wizualnym, nie masz szczęścia.

W każdym razie idę spakować swoje rzeczy, wiem, że tłum linux tylko do jednego widoku wykrzyczy to i wyrzuci mnie z miasta w mgnieniu oka.

Jakiś facet
źródło
Masz rację. To nie jest IDE, jakie znamy. Interesujące jest jednak to, że PO głosował na tę odpowiedź! Przybijanie kolorów do masztu: Jestem fanem makefile wiersza poleceń.
ScrollerBlaster
Wreszcie ktoś, kto ma trochę mózgu ... Myślę, że inni po prostu kodują trywialne rzeczy, jeśli potrafią zrobić wszystko za pomocą emacsa / vima.
Pippo
8

make + vim + gdb = jedno świetne IDE

Matt Fichman
źródło
7

Bardzo podoba mi się IDE Ultimate ++ . Ma pewne funkcje, które zostały zaprojektowane do użycia z ich własną biblioteką (która, BTW, jest całkiem fajnym zestawem narzędzi, jeśli nie chcesz kupować na GTK + lub QT), ale działa doskonale dobrze z ogólnymi projektami C ++. Zapewnia przyzwoite uzupełnianie kodu, dobre kolorowanie składni, zintegrowane debugowanie i wszystkie inne funkcje większości współczesnych IDE.

dguaraglia
źródło
łał! Jeśli chodzi o zrzuty ekranu, które naprawdę wyglądają niesamowicie! Na pewno spróbuję. Czy wiesz, czy muszę za to zapłacić? (Nie jest to całkiem jasne na stronie Ultimate ++)
Nie, to nic nie kosztuje, jak w „mowie”, „piwie” i „jeździć”. Są nawet dość otwarci na akceptowanie łatek i bardzo często wypuszczają, więc jest to tak otwarte oprogramowanie, jak to możliwe :)
dguaraglia
7

Naprawdę polecam blokady kodu . Nie jest tak ciężki jak Eclipse i ma obsługę projektów Visual Studio.

DavidG
źródło
6

Być może projekt Linux Tools Project dla Eclipse może zaspokoić twoje potrzeby?

Projekt Linux Tools ma na celu dostarczenie programistom Linuksa w pełni funkcjonalnego C i C ++ IDE. Opieramy się na źródłowych funkcjach edycji i debugowania CDT oraz integrujemy popularne natywne narzędzia programistyczne, takie jak GNU Autotools, Valgrind, OProfile, RPM, SystemTap, GCov, GProf, LTTng itp. Obecne projekty obejmują przeglądarki i analizatory śladów LTTng, Edytor .spec RPM, integracja kompilacji Autotools, narzędzie do analizy wykorzystania sterty Valgrind oraz narzędzia do profilowania połączeń OProfile.

Jean Hominal
źródło
6

W systemie Linux jest wiele IDE:

Z mojego doświadczenia najcenniejsze są Eclipse i Qt Creator . Obie zapewniają wszystkie „standardowe” funkcje (tj. Autouzupełnianie, podświetlanie składni, debugger, integracja z git). Warto zauważyć, że Eclipse zapewnia również funkcje refaktoryzacji, a Qt Creator zapewnia integrację z Valgrind i wsparcie dla wdrażania na zdalnych obiektach docelowych.

Również komercyjny CLion IDE wydaje się całkiem dobry (ale nie używałem go zbyt często).

Claudio
źródło
5

Słyszałem, że Anjuta jest dość sprytna dla użytkowników Gnome. Grałem trochę z KDevelop i jest fajny, ale trochę brakuje mu funkcji. Code :: Blocks jest również bardzo obiecujący i najbardziej mi się podoba.

wvdschel
źródło
5

Sun Studio wersja 12 jest do pobrania za darmo (dostępne jest BEZPŁATNE i płatne wsparcie) - http://developers.sun.com/sunstudio/downloads/thankyou.jsp?submit=%A0FREE+Download%A0%BB%A0 .

Jestem pewien, że masz obsługę uzupełniania kodu i debugowania, w tym obsługę wtyczek w tym środowisku IDE.

Sun Studio jest dostępne dla systemów Linux i Solaris. fora: http://developers.sun.com/sunstudio/community/forums/index.jsp . Fora Sun Studio Linux: http://forum.sun.com/forum.jspa?forumID=855

Z chęcią wysłucham Twojej opinii na temat tego narzędzia.

BR,
~ A

anjanb
źródło
5

Wcześniej używałem Ultimate ++ IDE i jest raczej dobra.

Hernán
źródło
5

I wtedy zauważyłem, że po prostu nie tak tam pracujesz *, i wyrzuciłem wszystko, spędziłem kilka dni czytając podręczniki, konfigurując moją powłokę (bash), konfigurując środowisko GVIM, poznałem łańcuch narzędzi GCC / binutils, make i gdb i żyli długo i szczęśliwie.

W większości się zgodzę, ale problem dotyczy również percepcji: zapominamy, jak trudno było stać się produktywnym w dowolnym wybranym IDE (lub innym środowisku). Uważam, że IDE (Visual Studio, NetBeans, Eclipse) jest niesamowicie nieporęczne na tak wiele sposobów.

Jako dawny gość w systemie UNIX zawsze używam Emacsa. Ale to ma dość stromą i długą krzywą uczenia się, więc nie jestem pewien, czy mogę go polecić początkującym.

Poparłbym to; używaj Emacsa jako mojego głównego edytora zarówno w systemie Linux, jak i MSW (XP2, W2K). Nie zgodziłbym się, że ma stromą krzywą uczenia się, ale powiedziałbym, że z powodu ogromnej liczby cech ma długą krzywą uczenia się. Możesz być produktywny w krótkim czasie, ale jeśli chcesz, możesz nauczyć się nowych funkcji w nadchodzących latach.

Jednak - nie oczekuj, że wszystkie funkcje Emacsa będą dostępne w rozwijanych menu, jest po prostu zbyt wiele funkcji, aby je tam znaleźć.

Jak wspomniałem, od lat używam GNU Emacs na MSW. I zawsze działało dobrze z Visual Studio, dopóki nie „uaktualniłem” do 2008 roku; teraz czasami opóźnia wiele sekund przed odświeżeniem plików z dysku. Głównym powodem edycji w oknie VS jest funkcja uzupełniania kodu „Intellisense”.

NVRAM
źródło
5

Chociaż używam Vima, niektórzy z moich współpracowników używają SlickEdit, który wygląda całkiem dobrze. Nie jestem pewien co do zintegrowanego debugowania, ponieważ i tak nie bylibyśmy w stanie tego zrobić w naszym konkretnym projekcie.

SlickEdit ma dobrą obsługę nawigacji po dużych bazach kodu, z odniesieniami i skokami znaczników. Oczywiście ma też takie podstawowe elementy, jak podświetlanie składni i uzupełnianie kodu.

Greg Hewgill
źródło
5

Używam Eclipse CDT i Qt Creator (dla aplikacji Qt).

To są moje preferencje. To bardzo sugestywne pytanie i jest tyle odpowiedzi, ile jest programistów. :)

Etienne Savard
źródło
4

SlickEdit. Używam i kocham SlickEdit od 2005 roku, zarówno w systemie Windows, jak i Linux. Mam również doświadczenie w pracy w Visual Studio (5, 6, 2003, 2005) i tylko z Emacsem i wierszem poleceń. Używam SlickEdit z zewnętrznymi plikami makefile, niektórzy z moich kolegów z drużyny używają SlickEdit, inni używają Emacs / vi. Nie używam zintegrowanego debuggera, zintegrowanej kontroli wersji, zintegrowanego systemu kompilacji: generalnie uważam, że zbyt duża integracja jest prawdziwym bólem. SlickEdit jest solidny (bardzo mało błędów), szybki i intuicyjny. To jest jak niemiecki samochód, samochód kierowcy.

Najnowsze wersje SlickEdit wydają się oferować wiele funkcji, które mnie nie interesują, jestem trochę zaniepokojony, że produkt stanie się wzdęty i rozcieńczony w przyszłości. Na razie (używam wersji 13.0) jest świetny.

Radim Cernej
źródło
3

Wydaje mi się, że Ultimate ++ jest najlepszym rozwiązaniem do pisania programów między osiami

IonLupascu
źródło
3

Jeśli używasz vima przez długi czas, powinieneś zrobić to jako IDE. Dostępnych jest wiele dodatków. Znalazłem kilka z nich jako całkiem użytecznych i skompilowałem to tutaj, spójrz na to.

I wiele więcej w tamtejszej serii porad i wskazówek vi / vim.

maniak
źródło