company_banner

CLion — долгожданная IDE от JetBrains для С/С++ разработчиков — открывает публичный EAP

    Последнее время ни один пост от нашей компании не обходился без традиционного вопроса от читателей, «А когда же выйдет ваша кросс-платформенная C/C++ IDE?». И вот сегодня, наконец, мы готовы сказать: Public Early Access Program началась!



    Если коротко: тут — скачать, здесь — почитать ознакомительную инструкцию, а под катом — подробности.

    С самого основания компания JetBrains стремится облегчить жизнь разработчикам программного обеспечения. Мы создаем интеллектуальные программные решения, избавляющие человека от рутины. Мы начали с простого инструмента для рефакторинга Java-кода, а сегодня в нашем арсенале — интегрированные среды разработки для многих популярных языков и платформ: Java, .NET, Python, Ruby & Ruby on Rails, PHP, JavaScript, HTML, Objective-C и др. Так как мы любим и считаем правильным использовать то, что сами же создаем, то у нас появились и инструменты для совместной работы (сервер непрерывной интеграции — TeamCity, баг-трекер и система управления проектами по методикам Agile — YouTrack) и даже IDE для разработчиков и админов СУБД и инструмент для просмотра репозиториев и ревью кода.

    Языки С и С++ — старожилы мира программирования. Мы и их не обходили стороной. В IDE для iOS/OS X разработчиков — AppCode — поддержка этих языков была уже с самых ранних версий. Но мы решили пойти дальше. За прошедший год мы анонсировали поддержку С/С++ еще в двух продуктах: в ReSharper и в новой кросс-платформенной интегрированной среде разработки. О ней то и пойдет речь.

    Поддерживает CMake


    CLion (так мы назвали нашу новую IDE) сейчас работает с проектами на основе системы сборки CMake, одной из самых популярных в среде C/C++ разработчиков. Так что если у вас уже есть проект на основе CMake, то вам достаточно открыть основной файл проекта CMakeLists.txt в IDE. Всю информацию о файлах, входящих в проект, настройках и параметрах, CLion возьмет именно оттуда. Если же проекта еще нет, то встроенный визард поможет создать простейший проект и создаст файл CMakeLists.txt, добавив туда самое необходимое.

    Все изменения в файлах CMake наша IDE подхватывает автоматически, но вы можете и сами дать команду Reload CMake Project. Отдельно вызывать команду cmake при сборке проекта тоже не надо — CLion сделает это за вас. А вот если захотите вызвать до или после сборки какие-то дополнительные скрипты, то потребуется настроить специальный внешний инструмент (External Tool) и указать фазу, когда его следует запустить.

    Инструментальное окно CMake покажет вам ошибки, полученные при выполнении команды cmake, а также даст возможность отредактировать переменные CMake Cache:

    cmake_cache_b

    Кросс-платформенная и многофункциональная


    Главное отличие CLion от AppCode и ReSharper C++ — кросс-платформенность. Не важно, работаете ли вы на Linux, Windows или OS X, CLion запустится на любой из этих платформ. Набор инструментов, необходимых для работы с IDE, можно найти в нашей ознакомительной инструкции.

    CLion — это многофункциональная IDE. В ней вы можете не только писать на C и C++ (кстати, стандарт С++11 CLion поддерживает практически полностью, а о С++14 мы активно думаем и планируем), но и заниматься веб-разработкой на HTML(5), CSS, JavaScript, XML. Некоторые другие языки доступны в виде плагинов (например, Lua).

    IDE интегрирована с многими популярными системами контроля версий (Git (в том числе GitHub), SVN, Perforce, Mercurial, TFS, CVS) и баг-трекерами (Jira, YouTrack, Mantis, Gitlab и др.). В дальнейших версиях мы планируем добавлять поддержку фреймворков для юнит-тестирования.

    Помним о самом главном


    CLion сейчас поддерживает два компилятора: GCC и Clang. Под Windows предполагается использование инструментария Cygwin или MinGW (eсли вы пользователь Visual Studio и Visual C++ Compiler, то вам стоит обратить внимание на другой наш продукт — ReSharper для C++).

    Для отладки приложения предполагается использовать GDB 7.8. Встроенный отладчик позволит пройти программу по шагам, остановившись на точках остановки, посмотреть значения переменных и даже изменить их на ходу:

    debugger_b

    Интеллектуальная


    IDE основана на платформе IntelliJ и, конечно, уже включает многие интеллектуальные фичи, свойственные нашим продуктам:
    • подсветка синтаксиса;
    • автодополнения (включая «умные» дополнения, которые учитывают типы выражения, Ctrl+Shift+Space, если кто забыл):
      debugger_b
    • эффективные механизмы навигации (включая Navigate to Class/File/Symbol, Navigate to Declaration/Definition/Super Definition);
    • многочисленные механизмы поиска (от Find Usages с разнообразными вариантами группировки результата до «поиска везде»);
    • анализ кода на потенциальные ошибки и проблемные места и механизм быстрых правок, позволяющий находить более 30 видов проблем в одном только коде на С/С++:
      inspection_b
    • разнообразные рефакторинги кода:
      • переименование (включая использования в файлах CMakeLists.txt):
        rename_b
      • вынесение части кода в отдельную функцию, макрос;
      • введение новой переменной, константы, параметра, определения типа (typedef);
      • изменения сигнатуры функции:
        change_signature_b
      • безопасное удаление переменной, функции, и т. д.;
      • inline,;
      • перенос членов класса вверх/вниз по иерархии;
      • возможности генерации кода для конструкторов/деструкторов классов, методов getter/setter для членов полей класса, override/implement, surround with-конструкций:
        surround_with_1_b


      Чтобы получить лучшее представление о CLion, предлагаем посмотреть демо:



      Что в планах?


      Мы надеемся через несколько месяцев выпустить официальный первый релиз. Так что главной задачей сейчас будет улучшение текущей функциональности, продолжение поддержки CMake и, возможно, добавление поддержки LLDB и Google Test. А вот пост-релизные планы, на самом деле, зависят от вас — наших пользователей. Добавляйте ваши запросы в наш трекер и голосуйте за уже имеющиеся.

      Заинтересованы? Качайте Public EAP, пробуйте, оставляйте отзывы и задавайте вопросы на форуме, в твиттере, трекере или нашем блоге. Все ваши впечатления и комментарии очень важны для нас, ведь мы хотим, чтобы разработка на C и C++ в среде CLion приносила вам удовольствие и была продуктивна!

      Программируйте с удовольствием!
      Ваша команда JetBrains CLion
    Метки:
    JetBrains 282,45
    Компания
    Поделиться публикацией
    Похожие публикации
    Комментарии 266
    • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        Если платформа поддержит (http://youtrack.jetbrains.com/issue/IDEA-88198), то да.
        • +14
          взгляд со стороны: имхо для них сейчас это должно быть в самых низких приоритетах =)
          • +4
            Для Idea есть плагин. Вряд ли тут какие-то кардинальные отличия.
            • 0
              Для Gitlab не дождались :) youtrack.jetbrains.com/issue/JT-17386
            • +10
              Можно ли теперь поставить плагин поддержки С++ в IDEA?
              • +9
                Пока что разрабатываем как отдельную IDE. После 1.0 рассмотрим вариант выпуска в виде плагина.
              • +6
                Что на счёт поддержки разработки под Arduino? Там же тоже на C/C++ разрабатывают, только свой компилятор используется. Ну, т.е. никаких спец настроек не нужно — только настроить опции компиляции и проект и всё?
              • +2
                Во-первых большое спасибо! С марта очень часто заходил к вам в ожидании этой новости. Наконец не надо будет запускать виртуалку с линуксом для отладки C. (в OS X с этим не все просто...)
                А поддержка Makefile планируется? Всетаки они тоже… популярны ;)
                • +2
                  Планируется (http://youtrack.jetbrains.com/issue/CPP-274). Мы пока не решили, что делать раньше Makefile или qmake. Зависит от пользователей и их запросов, на самом деле.
                  • +6
                    qmake :)
                    • +11
                      Проголосовал за Makefiles. Старый добрый unix way… )
                      • +4
                        Уже даже ленивый успел перейти на генераторы :)
                      • +4
                        Удивите всех — сделайте поддержку qbs (в QtCreator-е до сих пор в зачаточном состоянии, а очень жаль)
                        • 0
                          поддержу эту мысль; но — qbs не столько система сборки, сколько еще и система описания проекта, отслеживания зависимостей, плюс она предполагает множество своих собственных вещей (определение, допустим, qrc файлов для сборки)… опять же, выполнение javascript-а внутри IDE.

                          может, достаточно хотеть всего лишь ограниченной поддержки и не требовать поддержки полной?

                          очень надеюсь, что CLion хотя бы не испакостит структуру проекта на qbs'е кучей своих cmake-файлов *ушел проверять*.
                          • +1
                            Как там у французов: «Будьте реалистами, требуйте невозможного».
                            • +1
                              в итоге у меня появилась куча CMakeLists.txt — по всему дереву проекта.

                              причем в .gitignore прописать их не вариант — в проекте лежит ThirdParty/%libname%, которые собираются таки через cmake, решение — создавать десяток записей вида:

                              subproject1/*/CMakeLists.txt

                              Не есть хорошо.
                        • 0
                          а как же GIP?
                        • +8
                          Планируется ли поддержка autotools(make) и Qt? Если да, то это будет идеальная IDE!
                          • +2
                            Планируется (http://youtrack.jetbrains.com/issue/CPP-274). Мы пока не решили, что делать раньше Makefile или qmake. Зависит от пользователей и их запросов, на самом деле.
                            • НЛО прилетело и опубликовало эту надпись здесь
                              • 0
                                И ведь правда, действительно нужно делать одновременно. Ведь qmake генерирует свой Makefile и уже сборка идет обычным make. :)
                              • 0
                                Что ж, я свои голоса на трекере оставил!
                            • +6
                              В упор не понимаю, зачем использовать Qt в других IDE? Логичнее не покидая экосистему, кодить Qt-приложения под Qt Creator. Отличная IDE, мало багов, как по мне. Стабильная и поддерживается разработчиками Qt.
                              • НЛО прилетело и опубликовало эту надпись здесь
                                • +5
                                  1) Плагины, который напрягают, можно легко отключить. Цветовые схемы, все настраивается.
                                  2) Дизайнер форм не нужен вообще. В случае с виджетами — перегружен, а QML вообще позволяет не покидать редактор,

                                  мимо- пользуюсь Qt Creator последние 3.5 года для всех C++ проектов
                                  • НЛО прилетело и опубликовало эту надпись здесь
                                    • +2
                                      Сразу выключайте плагины, которые вам не нужны. У меня, например, выключено не меньше половины плагинов поддержки всего разного, так что даже вкладки Design нету, а IDE летает, как птичка.

                                      Рекоммендую тот же час сдуть пыль, пройтись по настройкам, подобрать удобные для себя шрифты / цветовые схемы (там, кстати, есть режим FakeVim — замечательная иммитация редактора) и поиграться с плагинами.

                                      Вам понравится, я это гарантирую.
                                • +4
                                  В целом я согласен, Qt Creator отличная IDE. Но все же верю, что у JetBrains выйдет очень достойная IDE.
                                  • 0
                                    Я не говорю, что JetBrains не умеет делать среды разработки, нет. Я говорю, что логичнее использовать в экосистеме Qt именно Qt Creator, потому что эти ребята, определенно, сделают лучше. И опять-таки, не потому что JetBrains не умеют писать софт, а потому что экосистема.
                                    • +5
                                      Я говорю, что логичнее использовать в экосистеме Qt именно Qt Creator, потому что эти ребята, определенно, сделают лучше

                                      Я ни на чем не настаиваю, но AppCode получше Xcode будет во многом.
                                      • +4
                                        Они определенно сделают лучше те части, которые имеют отношение непосредственно к Qt. А вот как, например, там обстоит дело с редактированием кода вообще — подсказки, автокомплит, рефакторинг? В последний раз, когда я его смотрел, там это все было в состоянии, типичном для C++ IDE где-то пятилетней давности — т.е. робкие попытки распарсить плюсы «по-простому», загинающиеся на мало-мальски сложном коде с шаблонами. Для самого Qt этого хватает, а вот когда начинается активное использование STL и Boost — уже нет.
                                    • +5
                                      А вот не используем мы Qt, но qmake используем. Такое бывает, да.
                                      • +1
                                        В целом да, но вот более полноценной поддержки CMake мне в QtCreator не хватает.
                                        • 0
                                          Потому что QtCreator is stupid but Idea is smart. Если вы попробуете Idea на Java проекте, вы очень быстро заметите разницу.

                                          Qt Creator не очень продуман с точки зрения интерфейса, его парсер С++ ломается даже на сложном рабочем коде, а если код в некомпилируемом состоянии, то он может совсем запутаться (хотя, возможно, с переводом парсера на clang это поправили). Возможности рефакторинга тоже очень ограничены (попробуйте, например, переименовать файл так, чтобы все include поправились)

                                          Qt Creator поддерживает только C++ и javascript по большому счету. Большие проекты обычно содержат и части на других языках — html, xml, bash… — их совсем не удобно редактировать. Ну и в общем выбор плагинов гораздо более ограничен, чем в Idea.
                                      • 0
                                        А без CMake никак? А то у меня ни одного проекта с ним и нет (
                                        • +3
                                          Пока никак. Смотрите сюда: youtrack.jetbrains.com/issue/CPP-274. Мы пока не решили, что делать раньше Makefile или qmake. Зависит от пользователей и их запросов, на самом деле.
                                        • +1
                                          Можно поинтересоваться, чем этот продукт лучше бесплатного опенсорсного Qt Creator? И вообще, в чем «kill feature» CLion, который заставит меня пересесть из шустрого криейтора или той же студии на винде, на продукт JetBrains?
                                          • НЛО прилетело и опубликовало эту надпись здесь
                                            • +8
                                              Qt Creator — это IDE для разработки C++ приложений. Если я правильно понимаю, то CLion так же позиционирует себя, как IDE для С++ разработки. Помогите мне, слепому, найти сомнительность в моей далеко несовершенной логике, пожалуйста.
                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                • +8
                                                  Учитывая, что Qt — это С++ чистой воды, приправленный препроцессорами, которые на уровне IDE не рассматриваются вообще. Долой стереотипы. Qt Creator — это С++ IDE, ее даже можно отдельно от кьюта скачать. То, что она распространяется в бандле с Qt, только расширяет область ее поддержки.
                                                  • +8
                                                    Как у C++ редактора у Qt Creator очень много болячек в области автодоплнения, рефакторинга и прочего анализа кода, а так же с поддержкой cmake (она ужасна). Так что в данном случае он может быть объективно хуже любой другой IDE, у которой с этим все впорядке (CLion я уже скачал, но не смотрел, поэтому не могу сравнить еще)
                                                    • 0
                                                      Будьте добры, отпишите, как пощупаете.
                                            • +17
                                              Всем подавай «kill feature», которая заставит сразу все бросить и перейти на новую IDE. Никто никого не заставляет. Есть хороший проект, есть конкуренция. Зачем Вам эта самая «kill feature»? Вы в повседневной жизни используете только одну ее? И вообще используете свой текущий IDE только из-за того, что есть эта самая «kill feature»? А то я думал выбор IDE это совокупность факторов. Простите, что брюзжу слюной, я просто это к тому, что не хотите — не ешьте)
                                              • –2
                                                Прощаю, за брюзжу слюной, но я просто к тому, что когда на рынок выходит новый продукт, он должен быть чем-то лучше его предков. Если килфич не будет, то никто просто на него не перейдет, потому что всех все устраивает. Когда ты делаешь что-то не новое, а повторяешь старое — это, очень щепетильный вопрос, я бы сказал.
                                                • 0
                                                  Не воспринимайте на свой счет, но мне кажется, что производители техники от души посмеялись бы над фразой: «Если килфич не будет, то никто просто на него не перейдет, потому что всех все устраивает.»
                                                  Другая сторона медали. Меня вот полностью устраивали наручные часы — я их попросту не ношу. Но тут вдруг появляются умные часы, казалось бы, вот она, килфича — а мне как было удобно смотреть время на телефоне, так и продолжаю это делать. Подумайте над этим.
                                                • –1
                                                  А на данный момент, CLion не умеет и половины того, что под силу конкуррентам.
                                                  • +3
                                                    На данный момент CLion: «this build is not even a Beta yet». Сравнивайте по возможностям со зрелыми IDE от JetBrains.
                                                    • –19
                                                      Посмотрим-увидим… Чуйка подсказывает, что ничего сверх у них не выйдет, а «на свою сторону» они переманят только евангелистов экосистемы JB (фанаты IDEA, ReSharper, etc).
                                                      • +1
                                                        Ну ты загнул, конечно…
                                                    • +2
                                                      Простите, каким конкурентам? На какой платформе?
                                                      Например, на linux я не вижу из существующих IDE серьёзных конкуретов!
                                                      (разве что виртуалка с виндой и студией с Visual Assist, но это уже «извращённая» артиллерия).
                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                        • +3
                                                          А чем KDevelop и QtCreator не конкуренты?
                                                          • +2
                                                            Судя по скорости их развития они никогда не станут достойными промышленными IDE, которые будут годны для работы в большой команде с участием разработчиков-новичков.
                                                    • +25
                                                      Киллер фичами у JetBrains я бы назвал: глубину анализа кода, возможности авторефакторинга, встроенные инспекции кода на лету, поддержку VCS, скорость развития IDE и исправления ошибок, удобство навигации по проекту, поддержку огромного кол-ва библиотек и фреймворков. Опыт основан на Intellij Idea.
                                                      • +2
                                                        Может звучать субъективно, но тот же QtC умеет анализировать даже «тяжелые» случаи метапрограммирования из спецификаций С++11. Насчет поддержки VCS я ничего не буду говорить, потому что QtC поддерживает Git/Mercurial/Perforce/SVN/Bazaar/etc. Навигация в QtC выполняется по Локатору (Ctrl+K), который очень шустро индексирует все символы в классах и тд.

                                                        А вот качество авторефакторинга и скорость развития IDE это очень спорный вопрос…
                                                        • +2
                                                          Тут и раскрываются нюансы IDE от JetBrains. Раз уж субъективно… Функционал на первый взгляд тот же, но это не так.
                                                          Например, Git в QtCreator и Intellij Idea. Пришлось заменять его на TortoiseGit.
                                                          Навигация: как в Локаторе сделать поиск по имени функции во всем проекте? А поиск по шаблону кода?
                                                          Кастомизация интерфейса. IDE от JetBrains позволяют очень гибко настраивать внешний вид интерфейса. При разработке на Qt хочется иметь список открытых вкладок в виде постоянно открытого вертикального списка, но сделать это встроенными средствами или найти плагин так и не удалось.
                                                          Стабильность QtCreator оставляет желать много лучшего. Часто падает, спасают только автосохранение.
                                                          Автооформление кода. Задаёшь стиль, IDE автоматически приводи код к нужному виду. Очень удобно, когда на проекте есть новички, которые не могут писать хорошо отформатированный код.

                                                          Список можно продолжать долго, QtCreator сильно отстаёт в функционале и удобстве от Idea.
                                                          • –3
                                                            Создается ощущение, что вы очень давно не работали с криейтором.

                                                            1) Что вас не устраивает в поддержке Git? Коммиты делает, файлы добавляет-удаляет, диффы показывает.
                                                            2) Никогда в этом не нуждался. Не знаю как вы, но когда я ищу какой-то метод, то я представляю, где он находится, а Локатор отлично ищет по классу все символы.
                                                            3) Гибкость настройки GUI — это невероятно, невероятно субъективно.
                                                            4) У меня QtC за последние полгода не упал ни разу.
                                                            5) Начиная с позапрошлой версии, можно использовать дефолтный (Qt/GNU) или свой кастомный «coding style».

                                                            Список можно продолжать долго, но в этом будет мало конструктива, ведь сравнивать последнюю IDEA и QtC годичной давности — не конструктивно.
                                                            • +6
                                                              Работаю с 3.2.0, это последний на сегодня релиз.
                                                              1. Вопрос в удобстве, просто сравните с тем, как это сделано в IDE от JetBrains. Куча отдельных окон, даже просмотр лога представляет собой необработанный выхлоп git log. Никакого дополнительного функционала, даже фильтров нету.
                                                              2. Я привёл частный случай, средств для поиска символов в Idea очень много и большей частью из них я постоянно пользуюсь.
                                                              3. А в чём тут субъективность. В QtCreator внешний вид почти не кастомизируется, даже дерево проектов нельзя перекинуть на правую сторону.
                                                              4. У меня раз в неделю да свалится. Может быть у Вас проект недостаточно большой.
                                                              5. Я не нашёл возможности привести существующий код в соответствие заданным настройкам стиля кода.
                                                              • +4
                                                                Этот год провожу в обнимку с Qt creator. Считаю её прекрасной IDE, сильно заточенной под программирование на Qt. Я бы не назвал Qt просто С++ (тут место для холивара, но предлагаю в него не скатываться).
                                                                Просто хотел сказать, что нестабильность QtC у меня проявляется регулярно. Но только при закрытии приложения, поэтому ничего не теряется. OS X 10.9, если что, возможно на Win/linux дела обстоят лучше.
                                                                А так, отличная IDE. И даже редактор форм помогает быстро составить внешний вид окна без особых проблем (пока не начнутся сильно кастомные компоненты).
                                                                • 0
                                                                  У меня стабильная проблема с криэйтором: модификации .qbs перечитываются не сразу, а спустя какое-то продолжительное время после Ctrl-S. (Win). Что делать с этим?
                                                              • +6
                                                                Настоящая работа с C++ возможна только при полном парсинге содержимого. Никакое индексирование тут не поможет.

                                                                Если IDE заявляет полную поддежку C++, она должна успешно выполнить автодополнение для любой точки выражений из следующего примера:

                                                                #include <iostream>
                                                                #include <vector>
                                                                
                                                                template<typename T>
                                                                struct Parameter {
                                                                	std::vector<T> vector_field;
                                                                
                                                                	T get_first() { return vector_field.front(); }
                                                                };
                                                                
                                                                template < template<typename> class TemplateParam >
                                                                struct Example {
                                                                	// completing type passed as parameter
                                                                	typedef TemplateParam<int> SpecializedParam;
                                                                
                                                                        // using typedef to define a field
                                                                	SpecializedParam field;
                                                                };
                                                                
                                                                int main(int argc, char** argv) {
                                                                	// Instantiating outer template
                                                                	Example<Parameter> instance;
                                                                
                                                                	// Using inner template type
                                                                	instance.field.vector_field.push_back(42);
                                                                	std::cout << instance.field.get_first() << std::endl;
                                                                }
                                                                


                                                                То есть поставив курсор после «instance.field.vector_field.» мы должны получить дополнение на все функции-члены std::vector, причем с учетом специализации.

                                                                P.S.: Пример взят из моего баг репорта для KDevelop, который в последней версии успешно решает эту задачу.
                                                                • 0
                                                                  Автодополнение для вашего примера адекватно работает и в QtCreator 3.2.0 и в CLion.
                                                                  • +14
                                                                    Я для проверки анализа плюсов в IDE пользуюсь таким вот кодом:

                                                                    template<size_t N = sizeof(void*)> struct a;
                                                                    
                                                                    template<> struct a<4> {
                                                                        enum { b };
                                                                    };
                                                                    
                                                                    template<> struct a<8> {
                                                                        template<int> struct b {};
                                                                    };
                                                                    
                                                                    enum { c, d };
                                                                    
                                                                    int main() {
                                                                        a<>::b<c>d;
                                                                        d;
                                                                    }
                                                                    


                                                                    После чего переключаю target с 32-битного на 64-битный в настройках проекта, и смотрю, что будет в редакторе. Если все реализованно корректно, то первая строка в main должна менять смысл с объявления переменной «d» на выражение с двумя операторами < и >, и обратно. Соответственно, семантическая подсветка должна соответствующим образом подкрашивать «d» либо как как локальную переменную, либо как член enum'а; и всякие там Go to Definition, Find References, и наличные рефакторинги вроде Rename, должны корректно отрабатывать.
                                                                    • 0
                                                                      То есть, IDE корректно показывает, что тип выражения «instance.field.vector_field.back()» будет int?

                                                                      Чтож, тем лучше. Вероятнее всего, и там и там разбор реализуется средствами бакенда компилятора. В частности, такую функциональность предоставляет Clang/LLVM. То есть, IDE скармливает ему участки кода с метаинформацией, а бакенд производит синтаксический разбор.

                                                                      Строго говоря, это единственный адекватный путь решения задач парсинга С++.

                                                                      До последнего summer of code, KDevelop делал разбор C++ вручную, реализуя по сути полноценный парсер C++, только еще сложнее, ибо макросы препроцессора тоже приходилось кодировать как элементы синтаксиса. Вся эта канитель занимает около 50 000 строк кода, который сложен, глючен, а его поддержка сводится к игре в догонялки с компиляторами, которые всегда выиграют.

                                                                      Использование готового бакенда Clang, того же самого, что используется при реальной компиляции — это просто манна небесная для разработчиков, плюс возможность подсвечивать нетривиальные ошибки еще на этапе набора кода.
                                                                      • +1
                                                                        Редактор QtCrator не умеет решить даже тривиальные задачи, отсутствие решения которых очень мешает для разработки на C++:
                                                                        1.
                                                                        //...
                                                                        std::map<size_t, std::string> mymap;
                                                                        //...
                                                                        mymap //..
                                                                        

                                                                        — при наведении на mymap подсказка выглядит просто как «std::map», не показывая, какими параметрами инстанцирован шаблон, нужно переходить к месту определения.

                                                                        2.
                                                                        std::map<std::string //...
                                                                        

                                                                        в той же студии или kdevelop — будет подсказка по параметрам шаблона при наборе в духе
                                                                        std::map<K, <b>T</b>, H = std::hash<K>, A = std::allocator<std::pair<K, T>>>
                                                                        

                                                                        в QtCreator — ничего. В случае с большими наборами шаблонных параметров (например в boost), которые наизусть не помнишь — такого очень не хватает
                                                                        • 0
                                                                          Хм. Тогда я не понимаю как, по утверждению vt4a2h, QtCreator может решить тот пример с шаблонами, что я привел выше.
                                                                          • 0
                                                                            Он показывает методы вектора, но без типа. 3.1.2, Windows, MSVC
                                                                            • 0
                                                                              В смысле что понимает, что там будет std::vector, но без специализации? То есть, не покажет, что например front() будет возвращать int&?
                                                                              • 0
                                                                                Да. Просто reference написано. А у push_back в параметрах value_type&.
                                                                      • 0
                                                                        В Eclipse CDT работает. Парсит код самостоятельно.
                                                                  • +7
                                                                    Вот в посте пытались как раз это написать. Интеграция с cmake (автоматическое обновление проекта), навигация по коду, кодогенерация, рефакторинги всевозможные, анализ кода с подсказками, как найденные проблемы исправить. А еще есть встроенные VCS и таск-треккеры.
                                                                    • –2
                                                                      Интеграция с CMake есть везде.
                                                                      Навигация по коду есть везде.
                                                                      VCS и таски есть много где.

                                                                      Ничего нового, в целом. А вот кодогенерация… стоит пощупать, спасибо.
                                                                      • +22
                                                                        Навигация по коду есть везде

                                                                        Я тоже так думал, пока не воспользовался IDEA. Теперь мне кажется, что навигацию умеют делать только JetBrains :)
                                                                        • 0
                                                                          Интеграция с CMake есть везде.

                                                                          Имеете в виду подсветку синтаксиса или именно поддержку проектов на CMake? Ибо последнее я редко где видел.
                                                                      • +2
                                                                        В двух словах не объяснить. Нужно взять и попробовать. Вы как человек, всю жизнь покупающий новую продукцию автопрома в салонах по неимоверной цене. Он никогда не ездил на иномарке. «А зачем? Колёса и там и тут есть, руль есть, кресла есть, бензин такой же, едут тоже обе. Зато у меня новая.» И пока что он не попробует, его не переубедишь.
                                                                        • +1
                                                                          Про Qt Creator не скажу, но когда я пользовался IDEA, мне мышь была вообще не нужна, всё можно было делать хоткеями. В чистом Visual Studio я без мыши обходиться не могу, Visual Assist существенно улучшает положение, но всё же периодически приходится тянуться к мыши.
                                                                          От CLion в первую очередь жду полный контроль над средой с помощью клавиатуры.
                                                                        • +1
                                                                          А в каких версиях она будет? Community + коммерческая?
                                                                          • +1
                                                                            Пока 1.0 будет коммерческой версией. Потом рассмотрим другие варианты.
                                                                            • +5
                                                                              Сколько будет стоит лицения и когда ее можно будет приобрести? Будут ли скидки для первых покупателей?
                                                                              • +3
                                                                                Лицензия будет примерно по цене как у AppCode сейчас. Будет тогда, когда будет первая коммерческая 1.0 версия. Пока сроков нет, надо посмотреть на фидбек от public EAP и еще много чего доделать.

                                                                                Про скидки тоже пока рано говорить )
                                                                                • 0
                                                                                  OS лицензии планируете?
                                                                                  • 0
                                                                                    Что Вы имеет в виду под этим? Лицензия на продукт не зависит от ОС. Можно использовать на любой.
                                                                                    • 0
                                                                                      Подозреваю что OS == OpenSource.
                                                                                      • 0
                                                                                        А, извините за недо понимание тогда. В целом планируется стандартный набор лицензий, как, например, для AppCode.
                                                                          • 0
                                                                            Может это уже обсуждалось, но я всё же спрошу: поддержка 32-ной Windows будет из коробки? Я, конечно, запустил её при помощи 32-бит JRE, но хочется без лишних телодвижений.
                                                                            • 0
                                                                              Пока нет.
                                                                              • 0
                                                                                OK, поправить bat-файл не проблема. :)
                                                                                Включил usage statistics, пользуйтесь на здоровье!
                                                                                • +2
                                                                                  На самом деле, 32-битная Windows совсем не в планах. Просто потому, что мы поддерживаем только 64-битную JDK.
                                                                                  • +2
                                                                                    Расскажите, пожалуйста, почему вы приняли решение отказаться от 32-битной JDK.
                                                                                    • +4
                                                                                      В основном по двум причинам:
                                                                                      1. 32-битная JDK имеет ограничения по памяти и не дает CLion больше, чем 700mb. Мы не влезаем.
                                                                                      2. Ну и все же поддерживать столько операционок и тулчейнов, уже +1 еще одна JDK — это многовато/дороговато по ресурсам для нас. Приходится выбирать.
                                                                                      • 0
                                                                                        В проекте с кучей шаблонов кушает 6 гигабайт памяти, тут уже не до 32-битного Windows :)
                                                                                • +1
                                                                                  Я в JetBrains верю (т.к. пользуюсь их продуктами), но пока она настолько сырая, что пока выйдет релиз поддержка 32-битных систем будет просто не нужна.
                                                                                • +5
                                                                                  Запуская Android Studio сегодня взглянул на версию 0.8 и как раз подумал что к 1.0 должна появиться поддержка NDK и C++.
                                                                                  • +5
                                                                                    make! Нам нужен make!
                                                                                    Или хотя бы просто указать, какой командой проект собирается.
                                                                                  • 0
                                                                                    Будет ли поддержка c11?
                                                                                    А можно попросить чтобы, cmake генерировал ninja и собирал с её помощью?
                                                                                  • 0
                                                                                    А каким образом CLine определяет Toolchain?
                                                                                    На пример у меня в Windows есть MSYS2(MSYS64) GitMSYS и GNUStep Mingw
                                                                                    Из них он видит только GNUStep Mingw, при этом указывает путь к gcc/g++ которые расположены в GitMSYS
                                                                                    • +1
                                                                                      gcc/g++ он показывает, какие CMake нашел. Но вы можете любой gcc и clang через CMakeCache указать при использовании. CMake забандлен, но можно указать свой в настройках Toolchain.
                                                                                      • 0
                                                                                        Спасибо, сразу не догадался :)
                                                                                    • +3
                                                                                      Очень интересно. Скачал, установил. Буду тестировать.

                                                                                      P.S.: Не возражают ли авторы, если будет написан PKGBUILD для Arch Linux?
                                                                                      • +2
                                                                                        Не возражаем )
                                                                                        • 0
                                                                                          Собственно говоря сделал PKGBUILD и разместил его в AUR. Теперь всё это устанавливается в /opt командой

                                                                                          $ yaourt -S clion

                                                                                          Арчеводы могут пробовать :)

                                                                                          Единственное:

                                                                                          1. В комплекте идут cmake и gdb, за обсуждением не следил, может чего и пропустил, но зачем это если у linux-девелопера наверняка эти штуки есть. В целях тестирования? Собственно поэтому пакет разворачивает всё в /opt, чтобы не было конфликтов
                                                                                          2. Интересует точное наименование лицензии для добавки в PKGBUILD. Ссылку на сайт разработчика указал.

                                                                                          Прошу слишком больно не бить — это первый PKGBUILD, могут быть дикие косяки
                                                                                          • 0
                                                                                            GDB и CMake забандлены, чтобы уменьшить количество проблем со всем разнообразнием toolchain-ов, которые есть.

                                                                                            Соб-но, основной комментарий в том, что это не совсем JetBrains CLion IDE for C/C++, это Early Access Program build. Можно использовать в течении 60 дней с даты сборки.

                                                                                            Лицензия лежит просто в *.tar.gz (распакуйте, там есть директория license). Там еще куча всяких third-party tools (http://confluence.jetbrains.com/display/CLION/Third-Party+Software+Used+by+CLion)
                                                                                            • 0
                                                                                              Early Access Program build


                                                                                              Поправил описание пакета с учетом замечания
                                                                                              • 0
                                                                                                Спасибо. А вообще круто ) Были уже интересующиеся, так что надеемся, что кому-то пригодится.
                                                                                      • 0
                                                                                        Всё хорошо, но почему на платформе windows CLion поддерживает «только стандартный» mingw? Неужели в 64-битном TDM-GCC mingw «нестандартный»?
                                                                                        • 0
                                                                                          Есть отличия. Но в целом планируем поддержать: youtrack.jetbrains.com/issue/CPP-668
                                                                                          • 0
                                                                                            А когда примерно? В EAP ждать не стоит?
                                                                                            • 0
                                                                                              Пока не подскажу. Будет зависеть от того, насколько активно пользователи будут просить (там вот есть возможность проголосовать за ишью). И насколько много будет других более приоритетных задач.
                                                                                              • 0
                                                                                                И где/как голосовать?
                                                                                                • 0
                                                                                                  Vote кнопка есть в описании ишью.
                                                                                                  Ну или просто начните тайпать vote. Youtrack умный — он поймет.
                                                                                        • 0
                                                                                          Кстати, может кто ни будь подсказать, как юзать GDB если компиляция проводилась Clang?
                                                                                          Ругается что not in executable format: File format not recognized
                                                                                          • +1
                                                                                            Какая ОС? Какой файл (библиотечный может)? GDB бандленый или какой-то другой? В общем нам бы побольше деталей. Можно сразу в трекер: youtrack.jetbrains.com/issues/CPP. Постараемся разобраться. Спасибо.
                                                                                            • 0
                                                                                              Тот который в комплекте с IDE идет. На самом деле с этой проблемой я сталкивался и до того, при ручной компиляции, в gcc используется ключ -g для дебага, но если с этим же ключом компилировать через Clang, то GDB в упор не распознает бинарник, хотя он исполняется корректно. Если без ключа -g, то GDB дебажит бинарник, но breakpoint который я пытаюсь установить через b
                                                                                               указывает не туда, не на строчку в исходнике.
                                                                                              На пример простой HelloWorld с breakpoint указывающей вывод "Hello World" (С Language)
                                                                                              
                                                                                              в консольном GDB мне сообщается что Breakpoint 1 at 0x4027b0: file ../../../../../src/gcc-4.9.0/libgcc/config/i386/cygwin.S line 5
                                                                                              
                                                                                              В Clion (C++ Language) мне сообщается вот такое:
                                                                                              Signal: SIGILL (Illegal instruction)
                                                                                              Signal: SIGILL (Illegal instruction)
                                                                                              
                                                                                              Process finished with exit code 2147483647
                                                                                              
                                                                                              Система Win7 SP1 x86_64 / clang version 3.5 (trunk)/ gcc (i686-posix-dwarf-rev0, Built by MinGW-W64 project) 4.9.0
                                                                                              
                                                                                              Я к сожалению не очень хорошо знаю GDB, уповал всегда на умение IDE работать с дебагером
                                                                                              В сети искал, но к сожалению не нашел информации, как подружить Clang и GDB
                                                                                              • 0
                                                                                                Да, это похожа вот это: llvm.org/bugs/show_bug.cgi?id=13211. К сожалению, существует давно и пока не пофикшена.
                                                                                                • 0
                                                                                                  Ходят слухи, что исправлена еще два года назад (баг по ссылке — RESOLVED FIXED)… Если нет, то надо его переоткрыть с новыми данными.
                                                                                                  • 0
                                                                                                    Разобрался, просто надо добавить флаг -dwarf-2, и из консоли GDB дебажит теперь корректно, и тот который у меня в комплекте с mingw32-dwarf2 идет и встроенный в CLion
                                                                                                    В самой IDE еще не проверял, но уже хоть что то
                                                                                            • 0
                                                                                              У меня на Ubuntu 14.04 на довольно крупном проекте ведет себя очень неотзывчиво, сначала индексировались файлы 15 минут, сейчас на любой введенный символ идет заметный отклик в секунды полторы, автодополнение по ., ->, :: с еще большей задержкой выходит. Зато Go To Definition/Declaration быстро :-)
                                                                                              • 0
                                                                                                Когда подтупляет на печати символов или автодополнении, попробуйте снять снепшот (http://devnet.jetbrains.com/docs/1087) и заслать нам. Посмотрим, что там происходит.
                                                                                                • 0
                                                                                                  Можно прямо на clion-support слать?
                                                                                                  Еще заметил, что у меня с определенной регулярностью валятся StackOverflowError в Event Log (отослал через IDE Fatal Errors прямо внутри CLion).
                                                                                                  • 0
                                                                                                    Да, спасибо. Для связи с нами есть треккер (http://youtrack.jetbrains.com/issues/CPP), саппорт, форум (http://devnet.jetbrains.com/community/clion?view=discussions). Выбирайте, какой удобнее.
                                                                                                    • 0
                                                                                                      Я долго пытался залить memory snapshot и CPU profiling data через ftp put, но почему-то не получилось в итоге, отваливается по тайм-ауту после отправки put.
                                                                                                      • 0
                                                                                                        Можно расшарить. Интереснее правда CPU snapshot, чтобы посмотреть, где и что подтупляет. Но и memory положите заодно.
                                                                                                    • 0
                                                                                                      регулярностью валятся StackOverflowError в Event Log

                                                                                                      Не жмоттесь на оперативку. Виделил JVM больше памяти — избавился от 90% ошибок.
                                                                                                      • +1
                                                                                                        Тем временем IDE продолжила течь и начала кидать OutOfMemory не через 5 минут, а через 15.
                                                                                                        • +1
                                                                                                          Засылайте exception нам. Разберемся.
                                                                                                          • 0
                                                                                                            CLion у меня не валится пока. Это я к решению проблемы утечек с помощью выделения большего объёма памяти.
                                                                                                            • 0
                                                                                                              У меня не течёт CLion (по крайней мере не заметно). Просто ему изначально мало памяти по дефолту выделено, и исключения валятся в лог со скоростью 2-3 в секунду на пустом проекте. В текущем билде нет vmoptions для 32 бит, нужно самому создать его.
                                                                                                              • 0
                                                                                                                Тут официальное объяснение, почему так лучше не делать habrahabr.ru/company/JetBrains/blog/236061/#comment_7944287
                                                                                                                • 0
                                                                                                                  Не пользуюсь Windows, а на Linux всё вполне хорошо.
                                                                                                                  • 0
                                                                                                                    И на Linux под CLion вполне нормально выделяется до 2 Гб (x86).
                                                                                                    • +5
                                                                                                      Это сделано для того, что бы у вас было время подумать :-)
                                                                                                      • 0
                                                                                                        Помнится у меня с IDEA + C++Plugin такая же проблема была, на MacOS X
                                                                                                        Особенно если Include от boost добавить
                                                                                                      • –2
                                                                                                        Где-то есть опечатка или неудачный выбор слов, потому что здесь указано
                                                                                                        CLion includes bundled CMake 2.8.12.2 and GDB 7.8 (except for the Cygwin case on Windows) so you don’t need to install them separately.
                                                                                                        а в статье написано
                                                                                                        Для отладки приложения предполагается использовать GDB 7.6.

                                                                                                        И ещё букву потеряли:
                                                                                                        Ruby & Ruby on Rail,

                                                                                                        Поправьте, пожалуйста. Спасибо!
                                                                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                          • 0
                                                                                                            Спасибо ) Поправили.
                                                                                                          • 0
                                                                                                            Надеюсь улутшется поддержка проектов с С++ и Objective C в AppCode.
                                                                                                            • 0
                                                                                                              Саппорт С++ с точки зрения саппорта языка будет одинаковый и в CLion, и в AppCode. Мы будем стараться выпускать апдейты, чтобы поддерживать одинаковый уровень и там, и там.
                                                                                                            • 0
                                                                                                              У вас есть опция сборки одного файла, чтобы не собирать все файлы в проекте, а только один, конкретный файл исходников, чтобы на выходе получился объектный файл? В Eclipse CDT это решается панелью Make Targets, а тут я что-то не нашёл.
                                                                                                              • 0
                                                                                                                Мы собираем те таргеты, которые нашли в CMakeLists.txt проекта. Run | Edit configurations позволяет посмотреть и настроить текущие конфигурации. Можно сделать конфигурацию и указать нужный таргет. И потом ее выбирать при запуске Run.
                                                                                                                • 0
                                                                                                                  Да я скорее про это.
                                                                                                                  • 0
                                                                                                                    Тогда проголосуйте за ишью, чтобы поднять приоритет. Но как workaround можно через CMake пока.
                                                                                                              • +2
                                                                                                                Радует, что JetBrains взялась за плюсовую среду, наконец-то есть шанс на появление кроссплатформенной среды с человеческим лицом.
                                                                                                                • +3
                                                                                                                  Добавьте, пожалуйста, поддержку D, очень хочется нормальную IDE для него.
                                                                                                                  • +4
                                                                                                                    Теперь, когда у вас есть плюсовая среда с отладкой, есть ли планы реализации многоязыковой отладки? Т.е. например Java/C++ с JNI, или Python/Cython/C++?
                                                                                                                    • 0
                                                                                                                      Я не из команды AppCode, скажу в общем — вам ничего не мешает запустить 2 run configurations и дебажить :) Скажем, если оно вместе работает в одной VM, как Java/Nashorn, то IDEA поддерживает совместную отладку (java+js), а вот в перечисленных вами случаях, это может быть как 4-летняя задача youtrack.jetbrains.com/issue/WEB-2099.

                                                                                                                      Или вы и так в курсе всего, и именно хотите, чтобы CLion сам занимался управлением потоками (типа если в C++ остановились, то ставим на паузу Python) и иметь всего одно окно отладки вместо двух (типа все равно в один момент может быть остановка только в одном месте независимо от VM)?
                                                                                                                      • 0
                                                                                                                        Да, именно все в одном, чтобы ставить брейкпоинты где угодно, и прозрачно ходить по Step Into из одного языка в другой и обратно. Как в VS поддержка native+managed отладки. Мне кажется, аналог для JNI в частности уже давно напрашивается.

                                                                                                                        У меня интерес к этой теме на самом деле не столько даже как пользователя, сколько как автора соответствующей фичи в PTVS — узнать, когда основные конкуренты планируют это реализовывать :)
                                                                                                                        • 0
                                                                                                                          Пока не думали об этом, если честно. Хотя идея интересная :)
                                                                                                                    • +4
                                                                                                                      А поддержка кросс-компиляции/нескольких тулчейнов будет? Очень gcc-arm-none-eabi интересует.
                                                                                                                      • +2
                                                                                                                        И avr, и msp430. И чтобы само понимало, где чьи инклуды лежат. В общем, youtrack.jetbrains.com/issue/CPP-871.
                                                                                                                        Вот тут точно нет конкурентов. Все эти Keil, IAR, CodeWarrior настолько убоги (и Windows-only), что ими стараешься лишний раз не пользоваться.
                                                                                                                        А как приятный бонус получим возможность собирать виндовые бинарники под линуксом через MinGW32.
                                                                                                                      • 0
                                                                                                                        В продуктах JetBrains есть семантическая подсветка? Не получилось с ходу загуглить.
                                                                                                                        • 0
                                                                                                                          Да, есть. Наши IDE действительно стараются «понять» Ваш код. на столько, насколько смогут ) Ну и подсветить его соответственно этому пониманию.
                                                                                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                                          • 0
                                                                                                                            Попробуйте в треккер ) Может, вас там поддержат.
                                                                                                                          • +2
                                                                                                                            Уже много лет имею дело с С++, Visual Studio, Qt Creator, XCode…

                                                                                                                            Что хотелось бы? Раз уж кросс платформ, то, возможность в MacOS включить быстрые клавиши как в винде и линуксе, т.е. один набор быстрых клавиш на все( пусть это будет не по умолчанию т.к. некоторые клвиши по дефлту используются в маке ( F10, F11 ) -но это отключается )

                                                                                                                            Далее, самая удобная работа с файлами есть только в XCode — можно легко перенести папку с исходниками, и он просто рекурсивно добавит их! Так же, в случае удаления файла — показывает его крассным в списке — очень удобно( в студии ногу сломишь), далее когда добавляешь файл, то те файлы которые уже есть, они в Finder(аналог Explorera в MacOs) показываются серым(т.к. уже есть) и выбрать можно только те, которых нет в проекте! Это тоже, очень удобно! Не знаю, можно ли этого добиться в Винде или в Линуксе, как вариант можно сделать свой «обзорщик файлов» — задача не архи сложная.

                                                                                                                            Нормальный дебаг, у Qt Creator и XCode есть одна проблема, они порой не могут понять, какую переменную нужно показать. my_class.some_value.value если на вести мышкой на value — то нифига не увидишь.

                                                                                                                            Обязательно доступ к памяти — т.е. просмотр памяти, в XCode хреново сделано.

                                                                                                                            Если что в голову пейредт(так же важное) напишу. Хороший проект, Удачи вам!
                                                                                                                            • –9
                                                                                                                              Посмотрел IDE
                                                                                                                              без поддежки компилятора от Visual Studio, это просто игрушка
                                                                                                                              Вкладки нельзя расположить радом друг с другом(перетаскивая) только в одной плоскости
                                                                                                                              Жеский Innelice — не удобно когда учитываться регистр

                                                                                                                              к примеру

                                                                                                                              GetSomeValue в классе SomeClass

                                                                                                                              SomeClass s;
                                                                                                                              s. и когда я пишу 'get' он он ничего не показывает, а нажимать линий раз shift это заморочка.

                                                                                                                              Еще один момент, есть 2 метода GetCat, GetDog — нужно чтобы можно было писать .cat — и он предлагал GetCat!

                                                                                                                              • +1
                                                                                                                                1. Про вкладки ничего не понял, подробнее опишите.
                                                                                                                                2. Автодополнение без учёта регистра: Settings->Editor->Editor->Code Completion->Case sensitive completion = None.
                                                                                                                                3. Поиск по .cat работает из коробки.
                                                                                                                                • –1
                                                                                                                                  > Поиск по .cat работает из коробки.
                                                                                                                                  так не работает.
                                                                                                                                  void Getcat(){}
                                                                                                                                  void Getdot(){}

                                                                                                                                  > Про вкладки ничего не понял, подробнее опишите.
                                                                                                                                  потянул за владку, и можно было сделать:
                                                                                                                                  gyazo.com/177af85223b3b84e7e0b30ab4b39736a
                                                                                                                                  • +2
                                                                                                                                    1. Если именно так, то работает после Settings->Editor->Editor->Code Completion->Case sensitive completion = None, но это очень специфичный кейс, вам так не кажется?
                                                                                                                                    2. В CLion имеются операции над вкладками: Move right, Move down, Split vertically, Split horizontally. Если они Вам часто нужны, то можно повесить на них хоткеи в Settings->Appearance and Behavior.
                                                                                                                                    • 0
                                                                                                                                      Еще, если 2 раза нажать шифт — то появляется окошко поиска по файлам — удобно, было бы супер учитывать не ТОЛЬКО 1 шифт, а так же левый и правый, чтобы можно было одновременно нажать 2 шифта — просто двойное нажатие не привычно, особенно мизинцем

                                                                                                                                      >но это очень специфичный кейс, вам так не кажется?
                                                                                                                                      Именно с getcat да, а вообще не учитывать регистр — это не знаю (VissualAssist по дефолту не учитывает, а это Musthave в мире C++)

                                                                                                                                      > Move right, Move down, Split vertically, Split horizontally
                                                                                                                                      Ребят фишка в чем, писать «широкий код» плохо, обычно не больше 80 в ширину. И вот на «обычном» full hd мониторе, практически половина места получается пустой!
                                                                                                                                      Именно по этому, удобно использовать экран разделенный на 2

                                                                                                                                      вот, сделал (живой) скриншот: gyazo.com/df62e34cd54ed77c8a8f1ed415798e08