Но самое главное — это каждодневная поддержка C++ коммьюнити, которое (спасибо вам!) приняло нас очень благосклонно. Спасибо за слова поддержки, репорты багов, предложения новых фич, сотни ретвитов и репостов наших новостей и анонсов! Сегодня мы готовы показать вам и рассказать, что же вошло в CLion 1.0.
Языки, платформы, инструменты
Кто-то из вас уже знает, что поддержку разработки на C и C++ предлагают сразу три наших продукта — ReSharper C++, AppCode и собственно CLion. CLion ориентирован на кросс-платформенную разработку, с использованием GCC или Clang (в случае Windows вам для этого потребуется Cygwin или MinGW). В качестве проектной модели используется CMake, для отладки — GDB. Этот набор будет, наверняка, меняться в дальнейшем — мы планируем и поддержку других билд-систем (Makefiles, qmake и др.), и использование LLDB для отладки. Для вашего удобства в сборку CLion входят CMake 3.1.3 и GDB 7.8 (исключение составляет случай использования Cygwin — там GDB не входит в сборку CLion). Если эти версии вам не подходят, легко можно поменять на любые другие версии соответствующих инструментов — в настройках надо открыть Build, Execution, Deployment | Toolchains и указать пути до нужных версий. Тут же находится небольшой тест для указанного набора тулов — если все в порядке, то вы увидите:
Поддержка CMake
Как уже сказано выше, CLion использует CMake в качестве проектной модели. Всю информацию о том, какие файлы входят в проект, какой стандарт C++ стоит использовать, какие библиотеки и флаги компиляции будут использоваться, и т. д. CLion берет именно из CMake. Пока что немногое из этого вынесено в отдельный UI:
Также есть специальное окно для редактирования настроек CMakeCache.
Если у вас уже есть проект на основе CMake, для начала работы с CLion просто откройте в IDE CMakeLists.txt верхнего уровня. Если же нет, то можно попробовать заимпортировать проект в CMake с помощью File | Import Project… CLion поможет создать простейший CMakeLists.txt.
Для удобства редактирования файлов CMake работает автодополенение команд CMake:
Здесь же пригодится и однострочное (с помощью
Ctrl+/
на Windows/Linux, ?/
на OS X) или блочное комментирование (Ctrl+Shift+/
на Windows/Linux, ??/
на OS X) в файлах CMake. Все изменения можно применить тут же автоматически, разрешив CLion перегружать проект автоматом после изменений.Для каждого таргета CMake CLion создает конфигурацию, которую можно собирать и запускать (в случае, если указан исполняемый файл). Исполняемый файл можно сменить в настройках конфигурации в Run | Edit Configurations… Это может быть полезно, если вы захотите указать исполняемый файл для конфигурации all, доступной по умолчанию. При добавлении новых файлов и классов C++ в проект через контекстное меню New, CLion предлагает автоматически обновить таргеты CMake — вам будет показан список для выбора нужного (нужных).
Умные возможности
Построенный на нашей открытой платформе IntelliJ, CLion включает множество традиционных умных возможностей, которые помогают разработчикам быть более продуктивными:
- умное автодополнение с фильтрацией по типу и использованием Camel Case/Snake case/Middle matching;
- автоформатирование кода, настройки стилей;
- быстрые сочетания клавиш практически для всех действий и команд. Стандартные раскладки IntelliJ IDEA, Emacs, Visual Studio, Eclipse, NetBeans, Xcode, ReSharper, а также возможности настройки раскладок;
- поиск использования символа, причем не текстовый, а с использованием текущего контекста, также можно искать символ в строках и комментариях;
- навигация по имени символа/класса/файла, переход вверх/вниз по иерархии, переход на определение/декларацию;
- различные режимы просмотра-навигации по структуре кода — по структуре текущего файла, по иерархии типов/вызовов/include-ов;
- система закладок по коду, TODO (CLion даже предупредит вас, если вы вдруг забудете закончить какую-то задачу в коде, отмеченную как TODO, перед коммитом кода в систему версионного контроля);
- генерация кода: забытые или еще не реализованные функции, члены родительских классов, конструкторы, функции get/set для полей класса — CLion поможет сгенерировать все это в один клик;
- surround with и live templates помогут быстро обернуть выделенные строки кода в if, while, for, #ifdef и др. или сгенерировать итератор по коллекции;
Рефакторинги
Конечно же, в CLion множество рефакторингов, которые автоматически обновят все необходимые места в вашем коде:
- Rename — при переименовании CLion сможет учесть не только контекст символа, но и использования в строках и комментариях;
- Change Signature — с помощью этого рефакторинга можно добавлять/удалять параметры, менять их порядок (порядок аргументов в вызовах функции также будет обновлен автоматически), менять тип результата;
- Move, Copy, Safe Delete — незаменимы для безопасной работы с файлами проекта;
- Inline — уберет лишнюю переменную или вызов функции, заменив их на непосредственное значение/код функции;
- Extract Variable/Constant/Parameter/Typedef/Define — не просто добавят новую переменную, тип, константу или макроопределение с новым именем, но и дадут возможность вынести определение в заголовочный файл и объявить новую константу статической. При нахождении аналогичных значений в других местах кода, CLion предложит подставить новую переменную/тип/константу/макрос не только в данном месте, но и в аналогичных использованиях:
- Extract Function — CLion автоматически определит, какие параметры надо передать на вход новой функции, а какое значение надо отдавать на выход, подставив нужные значения при использовании;
- Extract Superclass/Subclass и Pull Members Up/Push Members Down — эти две пары рефакторингов помогут с реорганизацией иерархии классов в вашем проекте; для удобства в соответствующем диалоге работает автодополнение для поиска нужного класса по имени.
Анализ кода
CLion не просто дает вам возможность писать код, но и пытается буквально понять, что же вы написали, и нет ли в этом коде проблем. За счет анализа кода на лету не только подсвечиваются потенциальные проблемы, но и сразу предлагаются способы их исправить (quick-fixes). CLion предоставляет более 40 инспекций по коду на C и C++, включая поиск неиспользуемого кода; пропущенные случаи в switch-case операторе; создание переменных, перекрывающих другие переменные, доступные в этом же контексте, с таким же именем; поиск бесконечной рекурсии и бесконечных циклов (здесь CLion использует полноценный Data Flow Analysis); несоответствия типов и др.:
Отладка
Встроенный отладчик (с использованием GDB) поможет досконально разобраться в коде. В CLion доступны несколько типов точек останова (breakpoints):
- Line breakpoints — самый простой и часто используемый, легко ставится и снимается простым кликом в левый вертикальной панели маркеров рядом с окном редактора;
- Symbolic breakpoints — необходимы, когда хочется остановиться в какой-то библиотечной функции или вызове, код которых не доступен или сложно определить строчку для точки останова первого типа;
- Exception breakpoints — как видно из названия, предназначены для перехвата и остановки в момент бросания исключений.
В редакторе во время отладки появятся непосредственные значения переменных (прямо напротив их объявления), а окно отладчика даст возможность просматривать значения переменных, добавлять watches, запускать любую команду в консоли GDB. Также можно посчитать значение любого выражения во время отладки, а автодополнение поможет в написании непосредственно интересующего вас выражения:
И напоследок
CLion, как и другие наши IDE, включает интеграцию с разнообразными системами контроля версий (Subversion, Git, GitHub, Mercurial, CVS, Perforce, TFS) и баг-трекерами (Jira, YouTrack, PivotalTracker, Bugzilla и многими другими), хранит локальную историю. Множество дополнительных функций доступно через систему плагинов: для CLion их уже около сотни.
А для тех, кто привык к простой консоли и vi, есть встроенный терминал и плагин IdeaVim для эмуляции Vim-режима.
И небольшое демо в завершение:
Заходите на наш сайт, читайте подробнее про возможности CLion, смотрите видео, интересуйтесь ценами и вариантами лицензий.
А 6 мая 2015 года мы проведем бесплатный вебинар, на котором покажем самые интересные возможности CLion. Зарегистрируйтесь уже сегодня! В процессе вебинара можно будет задавать вопросы. Мы постараемся ответить на них в эфире, а на что не успеем — ответим в почте и блоге.
Программируйте с удовольствием!
Ваша команда JetBrains CLion
Комментарии (148)
Kentzo
15.04.2015 13:06-2Синхронизацию шортактов сделали или пользователям предстоит ручками мучиться?
anastasiak2512 Автор
15.04.2015 13:08+5В каком смысле синхронизацию? Доступны стандартные раскладки IntelliJ IDEA, ReSharper, Xcode, Emacs, Vim, Eclipse, VS и др. Можно, как и в любой другой IDE от JetBrains на платформе IntelliJ заэкспортить свою кастомную раскладку, и заимпортить ее потом в CLion.
Kentzo
15.04.2015 15:55-1А как связаны доступные раскладки и синхронизация?
Речь идет о синхронизации между приложением установленным на разных компьютерах пользователя без мучений. В идеале: синхронизация между различными продуктами, ведь очень многие действия по редактированию пересекаются. Совсем вы идеале: синхронизация настроек инспекции в пределах компании.
Настройка под себя это та еще мука, но необходимость это проделывать для каждого форка IDEA…enDal
15.04.2015 16:46+2Вы можете попробовать Settings Repository плагин. Он позволяет синхронизировать настройки при помощи git репозитория. Пока что плагин сыроват, поэтому он не особо рекламируется
Kentzo
15.04.2015 21:00Интересная вещь, посмотрю. Но сторонний продукт такого рода вызывает сомнения: нет гарантий, что он будет совместим с новыми версиями IDE.
Пользуюсь различными продуктами JB лет 5 и до сих пор не понимаю, как при таком чудовищном количестве шорткатов и такой глубокой возможностью кастомизации не запилить такую простую вещь как синхронизация настроек…Bringoff
16.04.2015 11:44Мне кажется, кастомизация шорткатов — не слишком частое действие. Один раз настроил, экспортировал, кинул на какой-нибудь dropbox, и потом на всех машинах при необходимости импортируешь.
Хотя, конечно, синхронизация — интересная идея, но вряд ли стоит делать ее приоритетной.
milo
15.04.2015 13:10+3Решили ли проблему с производительностью? При работе с boost::multi_index_container ide зависала очень надолго.
anastasiak2512 Автор
15.04.2015 14:41Надо пробовать. Какие-то проблемы решили, какие-то еще остались, какие-то в разработке сейчас. Нам, чтобы разобраться, очень полезен CPU snapshot (https://intellij-support.jetbrains.com/entries/29983118-Reporting-performance-problems) или пример проекта, где проблемы. Мы, конечно, тестируем сами на больших проектах, особенно с boost, но, наверняка, многого не замечаем. Так что если вы попробуете и нам расскажите, то мы будем благодарны.
alexeibs
15.04.2015 17:12А есть подобная инструкция для R# C++? Установил в пятницу «на попробовать», создается такое впечатление, что он работает все медленнее и медленнее :(
dovzhikova
15.04.2015 17:31Да, есть, здесь: resharper-support.jetbrains.com/entries/24083148-Visual-Studio-with-ReSharper-is-slow
Если кратко, то путь следующий: ReSharper > Help > Profile Visual Studio, затем выполнить тормозящие операции под профилятором. После этого вы можете отправить нам снепшот из того же окна (анонимизированная информация о системе собирается автоматически и прикрепляется к тикету).
afiskon
15.04.2015 13:24+1Это просто отличная новость!
Но, увы, у меня не получилось купить лицензию с помощью Яндекс.Денег i.imgur.com/BNt5CL4.png :(afiskon
15.04.2015 13:35Я смотрю, CLion знает типы переменных, отображает их при нажатии Ctr+Q. А нельзя ли также сделать отображение типа без документации через Alt+=? У меня, как, вероятно, и у многих других пользователей продукции JetBrains, мышечная память на него :) И еще вопрос. Планируется ли добавить полноценный вывод типа для auto переменных? Сейчас это работает только в обычном коде, но не в шаблонах i.imgur.com/uvxCWXM.png
Hertz
15.04.2015 13:46+2Не только в шаблонах, в моем проекте вывод auto ломается и на более простых примерах.
afiskon
15.04.2015 13:58Печаль. А как на этих примерах ведет себя Eclipse CDT? Я просто знаю под Linux только две IDE для С++, умеющие выводить типы — Eclipse и CLion.
Hertz
15.04.2015 14:00+1Про CDT не знаю, давно ушел от него. Есть еще KDevelop — он справляется. Но я не пользуюсь, в случае проблем с CLion откатываюсь в emacs, например когда в шаблонном коде начинаются сильные тормоза редактора.
tzlom
15.04.2015 14:09+1QtCreator тоже выводит, но сложные шаблоны пока не тянет
afiskon
15.04.2015 14:11Ой, а каким хоткеем в QtCreator посмотреть тип? Я читал их шпаргалку по хоткеям и не нашел. Может посоветуете туториал какой-нибудь или иного рода учебный материал по этой теме?
tzlom
15.04.2015 16:03+1До вашего поста как то жил и не задумывался, тип можно узнать по ctrl+space после имени переменной (без точки или ->, иначе будет автодополнение методов).
Проверил, а и в правду — тип не пишет, хотя автодополнение предлагает, наверное это баг/недосмотр, надо будет в багтрекер написать
fshp
15.04.2015 16:59Это только при использовании Clang в качестве парсера (он жутко медленный). Стандартные средства не могут вывести тип объекта, если указатель на него хранится в шаблонном контейнере.
std::vector<MyClass*> vec; ... vec[0]->
Тут автодополнение ломается.tzlom
15.04.2015 19:45Не совсем так, шаблоны он парсит, к примеру замените std::vector на QVector, и это не зашитое поведение, в этом тоже легко убедиться. Но std::vector это не просто шаблон (tm), с ним не справляется, возможно — чрезвычайная сложность шаблона сказывается, возможно сам шаблон явно или косвенно использует особенности реализации gcc о которых QtCreator не знает
Hertz
15.04.2015 14:09+2Вообще эти примеры — откровенные баги, их исправят наверняка. А вот чтобы в вашем примере auto0 выводился в T — тут явно требуются нехилые средства для анализа шаблонов. Нужно понять, что decltype(*std::begin(std::vector{})) это тот же самый T, которым параметризован вектор, думаю не самая простая задача.
anastasiak2512 Автор
15.04.2015 14:51+2Шорткат quick documentation можете сами поправить на тот, который Вам больше нравится в Settings | Keymap. Или еще можно воспользоваться quick definition — Ctrl+Alt+B (в дефолтовой раскладке).
Да, над auto работа ведется. Прямо сейчас. Надеемся, станет лучше.
BiTHacK
15.04.2015 13:36+5Имеется ли у вас статистика по количеству коммерческих проектов на Windows под компиляторы Cygwin или MinGW? Планируется ли в Clion поддержка компиляторов от MS VC и Intel C++ Compiller? Имеется ли публичный RoadMap на следующий релиз(ы)?
SerJook
15.04.2015 13:45+7Да, странно, что самые популярные компиляторы для Windows не поддерживаются.
anastasiak2512 Автор
15.04.2015 14:59Для использования MSVC предназначен наш другой продукт — ReSharper C++ (https://www.jetbrains.com/resharper-cpp/) — плагин для VS.
Вообще согласно нашим исследованиям почти половина тех, кто разрабатывает на Windows платформе, используют именно Cygwin/MinGW окружение. Поэтому на платформе Windows мы предлагаем на выбор два продукта — CLion и ReSharper C++.
Intel компилятор — мы планируем его поддержать в будущем. RoadMap пока обсуждается.BiTHacK
15.04.2015 15:06>почти половина тех, кто разрабатывает на Windows платформе, используют именно Cygwin/MinGW окружение
Речь идёт именно о коммерческих проектах или CLion ориентирован больше на OpenSource и любительские разработки, где действительно обычно используются Cygwin/MinGW?
tzlom
15.04.2015 16:19+3Хоть я и целиком и полностью за mingw под windows, сделайте возможность вместо cmake запускать произвольную программу в настраиваемом окружении (ну или хотя-бы параметры от проекта передавать в аргументы, дальше можно уже самому доделать).
Понимаю что с cmake у вас интеграция выходит за рамки системы сборки, но вариант «папка с отображением дерева файлов»+вызывать программу компиляции — как минимум решит проблему управления проектами, а если приплюсовать сюда требования скрипта возвращающего дефайны + инклюды — можно получить уже вполне рабочее автодополнение.
Попробуйте так сделать, отметьте эту фичу как нестабильное временное решение, я думаю комьюнити вас поддержит в плане совместимости с системами сборки если вы дадите ему такую возможность.fshp
15.04.2015 17:04+1В CMake умеет сам использовать любой тулчейн, хоть sysroot указывайте и под другую платформу собирайте. Так что использование другого компилятора реализовано самим CMake. Другой вопрос, что CLion не поддерживает remote-debug, что сильно ограничивает область его применения. Ну серьёзно, это же C++, отладка на таргет системах — первое что нужно было реализовывать.
stigger
15.04.2015 19:29Просто для сборки запускать можно что угодно при помощи функции External Tools.
Что касается проектной модели — идеального, подходящего всем варианта не существует, а с чего-то нужно было начинать. Решили начать с CMake.
Hertz
15.04.2015 13:42+4Расскажите, много ли покупателей в первый день? Ведь мы все так ждали :-)
anastasiak2512 Автор
15.04.2015 15:00+5Достаточно) Мы вполне довольны.
Louter
15.04.2015 18:44Яндекс деньги налажены? Оплата других продуктов возможна?)
anastasiak2512 Автор
15.04.2015 19:08Вообще должно работать, со всеми проблемами пишите sales@jetbrains.com
NeoCode
15.04.2015 14:16+6Вчера вечером скачал дома, посмотрел…
Подтормаживает. Хотя это не к вам претензия, для софта на джаве это вообще характерная черта:)
Интерфейс внешне приятный, темная тема есть, проверять в работе не стал — нет у меня проектов на cmake.
Самая быстрая ide на сегодня — это qt creator. Но он неудобный, в нем нет даже закладок из коробки (какие-то плагины есть, который под виндой работают а под линуксом не собираются). Не говоря уже о совершенно странном и неудобном поведении вспомогательных окон.
А все что удобное — тормозит (включая visual studio). Ну вот почему так?
Пробовать в любом случае буду, но когда сделаете поддержку проектов на основе qmake (файлы .pro) и visual studio (vcxproj / sln).Kentzo
15.04.2015 16:09Посмотрите багтрекер CMake. У них до сих пор проблемы с генерацией проектов под разные IDE, а они над этим работают очень долго. Даже у VS бывают проблемы при «импорте» проектов из старых версий самой себя. Мне кажется это будет самоубийство для Jetbrains :)
CMake это очень правильный выбор, снимает столько головняков с разработчиков JB. И для пользователей тоже удобно — не нравится CLion, генерируй проект под свою IDE.
Athari
15.04.2015 16:39+6А все что удобное — тормозит (включая visual studio). Ну вот почему так?
Это глобальный тренд в разработке IDE уже много лет. Всегда стоит выбор:
1. Нагромоздить кучу фич, научить среду разработки понимать и анализировать код на ходу, при разработке использовать средства, позволяющие разрабатывать быстро и много.
2. Выжимать максимум производительности, экономить на всём, ударяться в оптимизации всегда и везде, в том числе в ущерб реализации новых фич.
В какой-то момент пришло осознание, что производительность программиста возрастает, если ему дать мощную, но тормозящую среду, но при этом тормоза не настолько зашкаливающие, что программист начинает материться раз в минуту. Если тормоза можно уменьшить наращиванием RAM, SSD и т.п. — вообще отлично, потому что железо гораздо дешевле программиста. Поэтому, если раньше подход был «если задержка 50 мс, то пора оптимизировать», то сейчас «если в пределах 400 мс, то жить можно, зато вон сколько фич».
Представьте, что лет 10-15 назад вам сказали бы, что передовая среда разработки для C++ будет написана на Java — вы бы не рассмеялись?NeoCode
15.04.2015 18:41Ну вот qt creator не тормозит, и фичи все есть… другое дело что интерфейс построен так коряво, что до этих фичей просто не добраться.
monah_tuk
24.04.2015 11:36Тут можно поспорить. Мне интерфейс Qt Creator очень нравится. Есть архитектурные заскоки (как минимум связанные с Baremetal плагином) и поддержка CMake оставляет желать лучшего. Плюс сложные конструкции кода временами отказывается воспринимать. Причём, бывает сложно собрать «минимально-рабочий пример» на котором наблюдаешь ошибку. Подключение CLang парсера спасает, но уже не раз ловил его падение, а про тормоза и говорить нече. Ну и функционала по рефакторингу хотелось бы побольше и поштабильнее (бывает что на коде просто не появляется меню, когда хочешь сделать Extract function). Фичи с хранением результатов разбора на диске, тоже не хватает: был проект который парсировался около 10 минут. Добавил файл — снова иди пить чай. Хотя фича сложная, особенно понять что и как обновлять.
Но всё же как-то научились жить вместе.
tangro
16.04.2015 11:24что передовая среда разработки для C++ будет написана на Java — вы бы не рассмеялись?
Я и сейчас рассмеюсь. До «передовой» CLion'у нужно побороть студию и QT Creator, а в ближайшие годы этого не произойдёт — нет никаких предпосылок и уникальных фич.StrangerInRed
16.04.2015 14:44Вы б хоть скачали, попробовали CLion. А потом уже такие смелые утверждения писали.
tangro
16.04.2015 21:47-1Да качал, качал. Не понял только, что мне с этим делать. Рабочие проекты (студийные, немного завязанные на C++\CLI) в ней не откроешь. Домашние (в основном Qt) — аналогично, да и незачем. Новый проект с интерфейсом — не сделаешь. Хеллоу Ворлд написать да, можно. Можно небольшую консольную утилиту. Но это всё можно и в блокноте написать. В общем, пока применения не придумал.
Louter
16.04.2015 17:58Студию побороли уже: они на всех платформах и это IDE.
Возможно вы парируете это настраиваемостью проекта. На что я замечу, что CMAKE куда гибче, а то, что пока это не GUI так не велика беда. Зато новые фишки проще внедрять.
Про QTCreator сказать не могу, не трудился в нём. Но вроде основная фишка — создание интерфейсов, разве нет? Чего в СиЛайоне пока нету (или не нашёл) и появится в скором времени (или найду).tangro
16.04.2015 21:42-2«Побороли Студию» будет тогда, когда разработчики следующей ААА-игры или чего-то подобного по размаху скажут «да, пришлось выкинуть студию и взять CLion». А по факту Вин-разработчики со студии не уйдут, маководы влюблены в свой икскод, а линуксоиды в основном сидят в виме, обвешанном сотней плагинов. Да, любители опенсорса, студенты и стартаперы получат от CLion некоторый профит, но до мейнстрима тут далеко.
Что касается создание интерфейсов — то мне интересно, как оно там может появиться и выглядеть? Студия для С++ предлагает либо MFC с его визардами и редактором интерфейсов, либо WinForms\WPF (через C++\CLI), либо DirectX со средствами отладки сцен. Qt Creator, понятное дело, предлагает Qt. А какие возможности создания интерфейсов может предложить CLion?RPG18
16.04.2015 21:59Все что касается IDE это все очень субъективно. Лично я GUI делаю в Eclipse CDT + Qt Designer, и лично для меня это намного удобней чем QtCreator. И знаю людей, для которых это удобно делать в Vim, Emacs, NetBeans, KDevelop, Code::Blocks.
Louter
17.04.2015 21:32Варинтов не так много: gtk и Qt. Каждый из них имеет готовые инструменты для компиляции под другие платформы.
Разработчики игр, если честно, странный показатель. Там всё, __, заточено под винды и немножко под маки: IDE для С++, фотошопы, запекатели карт, унструменты движков (UrealEngine, Unity). Многие инструменты имеют возможность взаимодействовать с другими. Там попросту нет нужды, мотивации и интереса менять на СайЛайон студию, которая для игр отлично себя показала.
Но не играми одними С++ и Си дышит: приложения, встраиваемый софт, драйвера и, если прикинуть, можно нарыть десятки отраслей, где разработчикам винда как кость в горле, где приходится обвешиваться мингв и сигвином чтобы всё это собирать. Мак тоже показал негативный опыт для ряда системщиков из старой школы.
Так что если вы способны осознать в каких областях KDevelop нагибает и составляет конкуренцию остальным средам, то способны и понять для каких областей СайЛайон это глоток свежего воздуха =)
anastasiak2512 Автор
17.04.2015 12:07Пока что в CLion нет средств для разработки UI. И вряд ли в самое ближайшее время появятся. Но позже мы об этом обязательно подумаем.
monah_tuk
24.04.2015 11:42+1Но вроде основная фишка — создание интерфейсов, разве нет?
Нет. Много юзаю для всякого baremetal. При наличии Generic project manager вообще сказка: прикручивается к любой системе сборки. Плюс есть возможность сделать свой Мастер новых проектов, который умеет вызывать скрипт (точнее что угодно исполняемое): у меня так генерировался generic проект для жуткой легаси базы, куда из всего дерева брались только нужные файлы, что сильно экономило время на открытие проекта, могло вызывать дополнительные диалоги для задания параметров и т.п.
Louter
15.04.2015 18:47Это на каком проекте?)
Открывал мозиллу (вот уж точно грохнуться можно, а не проект: питон и плюсы с бустом и ГТК разных версий) когда была бетта и никаких тормозов после индексации. Правда компик не из слабых пк…
Джаву можно сильно ускорить gcj и если покапаться есть ещё плюшка) Но лагов (подтормаживаний) уже давно не было на амд-шных камнях, но бывали на интелах… (уж не камни в огороды процов, а наблюдения).
Revertis
15.04.2015 14:18+14Всё это хорошо, но теперь я начинаю ждать вашу IDE для Rust…
afiskon
15.04.2015 14:52+1Есть подозрения, что ближайшие лет 5 это не бизнес приоритетная задача ))) Точно не более приоритеная, чем нормальная поддержка скажем Haskell. Но тут энтузиастом пилится плагин для Rust github.com/Vektah/idea-rust
Revertis
15.04.2015 14:56Я видел этот плагин, он умеет только раскрашивать. Плагины энтузиастов обычно и пилятся годами, а функционал бывает очень слаб.
Rust это будущее, он способен заменить старого, разваливающегося C++. Поэтому, я считаю, что тот, кто запилит полнофункциональную IDE для Rust может рассчитывать на хорошую материальную поддержку.BiTHacK
15.04.2015 14:59И как много крупных коммерческих проектов на этом языке вы знаете? Или откуда ещё взяться этой материальной поддержке хорошей?
Revertis
15.04.2015 15:08+4Хорошо, давайте ничего не писать под новые языки, пускай они не имеют возможности развиваться. Энтузиасты запилят костыль тут и костыль там. А мы будем продолжать стрелять себе в ноги хорошо изученным языком.
BiTHacK
15.04.2015 15:21+1В современном мире новые языки появляются и пропадают очень быстро. Вдруг Rust не взлетит, кто будет покрывать немалые потери бизнеса? Разработка такого продукта сродни посевным инвестициям.
Revertis
15.04.2015 15:25+3Ну, всё просто — те, кто разобрался с Rust, понимают, что на нем очень просто разрабатывать проекты под любую систему, и он с огромной скоростью обрастает библиотеками и биндингами. Очень советую всем почитать о нем :)
RPG18
15.04.2015 16:49+3У Erlang нет мегасуперпупер коммерческой IDE, и это как то не очень мешает ему развиваться.
afiskon
15.04.2015 15:05+1Rust, бесспорно, интересный язык. Но тут проблема курицы и яйца. Пока на нем никто не пишет, нет инструментов и вакансий. Пока нет инструментов и вакансий, это никому не интересная игрушка. А то что плагин медленно пишется — ну так вы автору занесите, может разработка и ускорится. Racer хотя бы прикрутит, уже прогресс огромный будет.
andreylartsev
15.04.2015 15:31-3Добро пожаловать в Xcode с поддержкой языка Swift ) судя по примерам из Wikipedia Apple очень много позаимствовал из Rust для своего нового языка… чуть ли не все основные идеи. Так что вам должно понравится.
Revertis
15.04.2015 15:33Я не хочу приобщаться к технологиям Apple и к их Xcode, от которого все знакомые мне разработчики просто в ужасе.
StrangerInRed
15.04.2015 15:39На самом деле, людям, который видели внутренности obj-c понятно, что рантайм и идея swift возникла намного раньше чем rust. Причем, на очень много раньше. id например тот же var.
StrangerInRed
15.04.2015 15:19+2Я уже как-то задавал этот вопрос, но спрошу еще раз. Вы не планируете сделать свой monospace шрифт для idea-продуктов. Потому что, как только садишься на Windows, c OSX глаза просто в трубочку сворачиваются.
Singerofthefall
15.04.2015 15:48-2В чем проблема установить в windows тот же (или максимально похожий) шрифт, что вы используете в os x? Другое дело, что сам рендеринг шрифтов в разных ОС работает по-разному, но тут уж ничего не поделать.
StrangerInRed
15.04.2015 16:12Кстати заметил что в версия для OSX и OSX+bundled JDK очень все кардинально отличается с рендерингом.
leventov
15.04.2015 15:49Consolas пробовали?
StrangerInRed
15.04.2015 16:01Так Consolas по умолчанию вроде стоит. Menlo one love. Ток с ним проблемы под windows.
NeoCode
15.04.2015 18:43Интересно, какие с ним могут быть проблемы под Windows. Он у меня везде стоит, даже в total commander, и никаких проблем:)
StrangerInRed
15.04.2015 20:37У вас стоит Menlo в total commander? Вы вероятно очитались.
POPSuL
17.04.2015 16:18Я тут насмотревшись на OSX поставил
нагло своровав его с макосисебе Aythaya, и вполне доволен!
grossws
15.04.2015 15:21Stop/restart при дебаге починили, интересно?
Ну и поддержка тулчейнов пока очень ограниченная, ждем в следующих версиях.anastasiak2512 Автор
15.04.2015 19:49Если скажите о каком тикете идет речь — посмотрим в трекере. Ну, или попробуйте) Потом поделитесь результатом — будем благодарны. По дебагеру были фиксы в последних EAP-ах, но о чем вы конкретно, не могу сходу сказать.
grossws
15.04.2015 20:00По трекеру никакой активности: youtrack.jetbrains.com/issue/CPP-1807
anastasiak2512 Автор
15.04.2015 20:32Ок, спасибо за напоминание. Посмотрим, во что там все уперлось.
Clash
15.04.2015 15:58+1Я прирос к семантической подсветке — программирую в kdevelop. Часто приходится копаться в чужих исходниках, сильно помогает быстро мозгом схватить весь dataflow. А синтаксическую начал ненавидеть, только мешает, мозг совсем не на том концентрируется. Особенно с умолчательными вырви-глазными цветами. Надеялся, что здесь будет, а попробовал триал — нет. В эклипсе есть, у микрософта есть, даже в нетбинс уже есть, и даже в саблайм через отдельный модуль, а тут нет, печаль. Сделайте пожалуйста! Буду ждать, я терпеливый )
afiskon
15.04.2015 16:47Не знал, что такое вообще бывает. Спасибо :) Но не нашел как это включить в Scala Plugin. Неужто там нет?
Louter
15.04.2015 18:52А могли бы прощупать как следует клион (поработать) и сказать ощущения помимо этого?) (по мне кдевелоп пока ведущая ИДЕ под линухами, но это лишь вкусовщина)))
Clash
15.04.2015 19:04Он произносится как си-лайон, «морской лев», из-за этого у него и иконка такая.
Только вчера поставил, уже многое посмотрел, но как-то законченное мнение пока рано говорить. Качество в целом внушает. Если прямо нет требования семантической подсветки, то наверно это лучшее, что теперь есть под линукс.
dzzh
15.04.2015 16:37+4Ежедневно пользуюсь CLion уже месяца три, вы как раз выкатили первый EAP незадолго до того, как я пересел на С++. Разумеется, не все во время использования было гладко, но критичные баги быстро пофиксили, а с некоторыми небольшими улучшениями и фичами можно и подождать. В целом получилась отличная система, уже запросил на работе ключи для себя и коллег. Моя оценка — десять рефакторингов из десяти. Поздравляю с долгожданным релизом!
pasha_golub
15.04.2015 17:26Кросс-компиляция будет доступна? Чтобы, например, легким движением руки создавались бинарники для винды32 и винды64 из под Убунту?
stigger
15.04.2015 19:11Так как на C довольно много embedded-разработки, определённо будем думать в этом направлении.
monah_tuk
24.04.2015 11:52Для Qt Creator'а я сделал так: habrahabr.ru/post/248517 (или тут: htrd.su/wiki/zhurnal/2015/01/22/cmakeprojectmanager2_uluchshenija_v_dialoge_konfigurirovanija)
Кросс-билдинг основан на стандартном механизме тулчейнов CMake. Сам тулчейн можешь написать и сохранить в проекте, для нужной конфигурации просто выбрать его или написать inline-тулчейн (рыба предлагается). Задумывал ещё на основе Kit'ов генерить, но пока времени заняться нет.
Может какие идеи пригодятся :)
robert_ayrapetyan
15.04.2015 17:41Стоит ли ждать плагина к InteliJ IDEA Ultimate в ближайшее время или покупать CLion Standalone?
stigger
15.04.2015 19:13+1Никаких сроков появления этого плагина пока не определено, так что можно покупать.
robert_ayrapetyan
15.04.2015 20:11Спасибо! Хотелось бы только пожелать более мощной поддержки OpenJDK и платформы FreeBSD в частности.
Myshov
15.04.2015 19:33Ребята, я был на последнем CodeFest'е и оставил, свой e-mail JetBrains'ам на стенде. Вчера они прислали мне один скидочный купон на 20%. Если кому-то надо, пишите в личные сообщения — отправлю.
Kentzo
15.04.2015 21:19Где-нибудь можно посмотреть список поддерживаемых модулей CMake в IDE? В частности интересует ExternalProject.
stigger
15.04.2015 21:50Ввиду обширной функциональности CMake категоризации по поддерживаемости нет. Проще всего взять и попробовать и в случае чего писать в трекер.
Kentzo
15.04.2015 22:09Обязательно. Интересно было бы почитать про баги CMake, которые вы обнаружили (и надеюсь героически починили и заслали патч) в процессе разработки CLion.
anastasiak2512 Автор
16.04.2015 12:13Спасибо за мысль. Мы подумаем, есть ли нам что интересное рассказать. Если соберем интересной инфы — запостим в блоге.
VioletGiraffe
16.04.2015 08:05Ещё бы поддержку qmake-проектов…
anastasiak2512 Автор
16.04.2015 12:11Реквест есть, за него можно проголосовать. В самое ближайшее время это вряд ли случится. Пока хотим закончить умную поддержку CMake. А потом уж посмотрим на другие билд-системы. Правда пока по трекеру (по количеству голосов) Makefiles лидируют)
VioletGiraffe
16.04.2015 12:27О, спасибо, проголосую. У меня все кросс-платформенные проекты используют qmake, даже если не используют сам Qt.
Makefiles — тяжелое наследие прошлого.
VioletGiraffe
16.04.2015 12:37Ну, кстати, если можно с помощью qmake сгенерировать make-файлы и открыть проект в CLion таким образом — почему бы и нет. Лишь бы нормально работало.
MadHacker
16.04.2015 13:09Пользуюсь CLion с первого EAP билда.
Воюем с коллегой на тему CLion+Cmake vs QTCreator+Qmake. Без удалённой отладки я разгромно проигрываю эту битву :) В трекере уже за всё нужное проголосовал.
И релизу радуюсь. Куплю на днях. Но вот каждый раз выходит новая версия и думаешь, то ли сам успел куда-то влезть и функция перестала работать, то ли погибла в процессе разработки. EAP упоминать не буду, там это нормально. А вот в релизе…
Точно помню, что в старых EAP версиях я использовал ctrl+c в консоли «Run» и сигнал благополучно уходил в программу. А теперь получаю копирование из консоли, хоть ты тресни. И теперь не знаю, это такую фичу для удобства сделали (тогда бы кнопочку какую, для отправки сигналов в программу, или возможность запустить её в полноценной консоли) или случайно отломали?anastasiak2512 Автор
16.04.2015 13:15Спасибо за отзыв. Вообще из того, что поменялось, теперь в момент Run запускается псевдо-терминал (это так последние пару EAP-ов, RC и соб-но 1.0). Заведите, пожалуйста, реквест в трекере про посылку сигнала программе.
wibotwi
16.04.2015 22:56только заведите плиз на кнопочку, и чтоб там был выбор какой сигнал послать
INT или STOP или…anastasiak2512 Автор
17.04.2015 12:11Было бы круто, если бы вы это в трекере описали. Нам всегда интересно, как пользователи предполагают использовать ту или иную фичу, и что им кажется удобным. Это сильно помогает разработке. Заранее спасибо.
Godless
16.04.2015 17:37Ой крутяяяк. Сердечно поздравляю Вас с релизом!
Пробовал бэту около 3х месяцев назад на небольшом проекте, много чего понравилось. Не понравилось что не стартует на LInux x32… Дома ноут старенький, железо нынче дорогое… В общем хочется…
Вот доберусь до своего проекта, обязательно куплю!anastasiak2512 Автор
17.04.2015 12:09Спасибо! Очень приятно)
Да, 32-битные системы не поддерживаем. На то есть причины.
Hertz
16.04.2015 18:12У меня на Ubuntu 14.04 (Unity) иконка отображается в очень низком качестве (будто 64х64), что в dock, что при переключении окон alt+tab. Можно что-то с этим сделать?
anastasiak2512 Автор
17.04.2015 12:09Можно попросить Вас скриншот нам прислать, на clion-support at jetbrains.com? Посмотрим, в чем проблема и может ли что-то сделать.
horror_x
23.04.2015 02:20-2Всю информацию о том, какие файлы входят в проект, какой стандарт C++ стоит использовать, какие библиотеки и флаги компиляции будут использоваться, и т. д. CLion берет именно из CMake.
Это с самого начала вызывало у меня недоумение. CMake, независимо от того, насколько он популярен — не краеугольный камень, а всё-таки частный случай. Почему нет возможности создать freestyle-проект, который можно самостоятельно наполнить и настроить? Взять тот же CodeBlocks — он универсален, а ваша IDE — нет. Я так долго её ждал, а в итоге банально не смог ею воспользоваться, поскольку не использую CMake в качестве системы сборки.Hertz
23.04.2015 14:03+1horror_x
23.04.2015 15:59Не могу понять, какое это имеет отношение к моему комментарию. Я как раз предложил избежать этой проблемы и не использовать какое-либо конкретное решение в качестве единственно возможного варианта. Ну, или не ограничиваться набором конкретных поддерживаемых решений.
Почему бы не дать возможность создавать любой проект со свободной конфигурацией, командами сборки и т.п.? Это дало бы возможность вообще не зависеть от системы сборки. А CMake и т.п. вполне себе можно поддерживать дополнительно.
anastasiak2512 Автор
23.04.2015 16:52Благодаря чтению всей информацию из CMake файлов, мы можем зато резолвить код более корректно. При этом довольно много проектов использует CMake, поэтому начать мы решили с него.
Конечно, можно было бы попытаться сделать какой-то общий интерфейс, general, для конфигурации под любую билд систему, но, боюсь, пока мы не попробуем поддержать парочку конкретных систем, мы не поймем как этот интерфейс должен выглядеть.StrangerInRed
23.04.2015 17:20Научился работать с CMake, только для того чтобы пользоватся Clion. В итоге, адекватная build-система. Я понимаю, что это может не устраивать людей привыкших к VS, но для всех остальных это считай мана небесная.
horror_x
23.04.2015 17:59-1ОК, допустим, у вас проект, который не на CMake и мигрировать на него вы не собираетесь. Однако, вам не хватает удобной кроссплатформенной IDE и тут вы встречаете CLion. Что проще — продублировать всё в CMakeLists.txt или вбить пару команд сборки в настройках?
horror_x
23.04.2015 18:02Посмотрите на существующие реализации (например, CodeBlocks). В самой простой реализации это банальный редактор конфигураций, где можно задать команды сборки проекта/отдельного файла, пути, общие настройки (типа DEFINES и т.п.) и состав проекта или маски включения. Всё остальное уже вторично.
vovkos
24.04.2015 11:23Для *nix-овой C++-разработки в настоящий момент использую NetBeans, но нахожусь в активном поиске (все проекты на cmake). Пробовал clion где-то полгода назад, но тогда он был достаточно нестабилен (по крайней мере, были проблемы с зависаниями на моих проектах). С удовольствием поиграюсь с новым релизом.
Скажите пожалуйста, планируется ли поддержка директивы cmake source_group (виртуальные папки)? К сожалению, на сегодняшний момент единственный способ использовать виртуальные папки — это Visual Studio-генератор (но это подходит только для Windows-разработки). Все поддерживающие cmake ИДЕшки почему-то принципиально игнорируют данную директиву и используют структуру папок директории проекта.
Если не планируется (или вопрос поддержки обсуждается) — занесите в wish-list плз.RPG18
24.04.2015 11:37папок директории проекта.
Есть такая штуку как Матрица компетентности программиста, там есть такой пункт Организация дерева исходников, в котором
Структура дерева исходного кода соответствует логической иерархии и организации кода в проекте.
Глядя на имена файлов и структуру папок, можно понять как спроектирована данная система.
Встречал такой подход в нескольких фирмах в которых работал, и это чертовски удобно, когда тебе говорят: -вон там наш старый проект, теперь ты будешь его поддерживать.vovkos
24.04.2015 12:40Не хочу начинать священную войну о том, как правильно организовывать структуру проекта, поэтому всё нижеследующее является моим личным имхо.
Разбивать файлы на группы можно по разным критериям. Соответственно, итоговые группы получаются разные. Разбиение с использованием директорий файловой системы даёт возможность применить только один какой-то критерий.
Впрочем, от абстракции к конкретике: где лично мне удобно использовать виртуальные папки.
Допустим, у нас есть библиотека. В ней есть публичные хедеры (.h) и исходники реализации (.cpp .h и т.д). Очевидно, публичные хедеры должны лежать в папке отдельной от исходников реализации. В то же время для редактирования удобнее видеть .cpp и соответвующий .h рядышком.
Вторая причина. Если библиотека нетривиальна, то всегда хочется группировать файлы по функционалу. Если группировать их с использованием директорий файловой системы, то становится неудобно использовать директорию include (например, в llvm вечно приходится искать, в какую подпапку они положили соответвующий хедер, особенно с учётом того что они любят тасовать файлы по папкам в каждом новом релизе). Я лично предпочитаю иметь одну большую папку include, а группировку в ней осуществлять виртуальными папками.
Впрочем, на вкус и цвет… Но подозреваю, что я не единственный любитель виртуальных папок :)
anastasiak2512 Автор
24.04.2015 11:52Интересное предложение. А Вы не могли занести в трекер? Нам очень поможет описание use case, как вы себе это видите в IDE и пр.
vovkos
24.04.2015 12:55К сожалению, у меня нет аккаунта на вашем трекере. Создам чуть попозже и тогда добавлю. Как я себе вижу это в IDE — помимо File View, отображающего структуру файловой системы, должен быть какой-нибудь Source Group View, отображающий структуру виртульных папок (в качетсве reference — смотреть что создаёт Visual Studio-генератор cmake-а).
Кому надо — будут использовать для навигации виртуальные папки, кому нет — можно работать с File View, как привыкли.anastasiak2512 Автор
24.04.2015 13:12Да, спасибо большое. Если сможете показать примеры из других IDE, где Вам нравится, как это реализовано, тоже будет полезно. Ну или просто пришлите это все на clion-support at jetbrains.com. А мы сами уже в трекер добавим.
IVAN2001
28.04.2015 10:55Вопрос может немного не в тему, но нет ли планов у JetBrains разработать IDE для программирования микроконтроллеров?
Если такое уже есть и я что-то упустил, то киньте ссылочку. Интересна разработка под STM32.StrangerInRed
28.04.2015 13:00+1github.com/ObKo/stm32-cmake
habrahabr.ru/post/247017
Возможно поможет. По идее если отконфигурировать cmake, то все заведется.
anastasiak2512 Автор
28.04.2015 13:25Добавить к комментарию выше в общем нечего. Отдельной IDE никакой не планируем.
OnYourLips
Сильно ли пересекается его функционал с AppCode?
Будут ли они объединены?
anastasiak2512 Автор
С точки зрения языка — поддержка одинаковая. Отличаются они скорее набором тулов. AppCode — использует Xcode build и Xcode проектную модель. CLion — CMake и GCC/Clang компиляторы. Плюс, CLion кросс-платформенный, а AppCode только для мака.
Вообще про все наши C++ мы попытались расписать случаи использования здесь — www.jetbrains.com/cpp
Louter
В основном описание функций (вроде как) всех Ваших IDE
Основные отличия и правда только в тулзах + генерация, если правильно понял нереализованных методов из интерфейсов?
Хотелось бы увидеть чем отличается от штормов, идеи и пайчарма) Какие именно вещи помимо тех, которые все и так ожидали увидеть))
И огромное спасибо и уважение! Работа коллосальная! Крупные проекты протестирую сегодня же вечером))