Pull to refresh

Comments 268

UFO just landed and posted this here
Если платформа поддержит (http://youtrack.jetbrains.com/issue/IDEA-88198), то да.
взгляд со стороны: имхо для них сейчас это должно быть в самых низких приоритетах =)
Для Idea есть плагин. Вряд ли тут какие-то кардинальные отличия.
Можно ли теперь поставить плагин поддержки С++ в IDEA?
Пока что разрабатываем как отдельную IDE. После 1.0 рассмотрим вариант выпуска в виде плагина.
Информации по плагину не появилось еще?
Пока что это не видится приоритетной задачей. Мы не бросаем эту идею, но в самое ближайшее время вряд ли что-то поменяется в этом направлении
Что на счёт поддержки разработки под Arduino? Там же тоже на C/C++ разрабатывают, только свой компилятор используется. Ну, т.е. никаких спец настроек не нужно — только настроить опции компиляции и проект и всё?
Подумаем обязательно над этим (правда вряд ли раньше выпуска 1.0). Будем благодарны, если заведете тикет в трекере: youtrack.jetbrains.com/issues/CPP
Отвечу сам себе, чтобы в дальнейшем было людям проще найти — habrahabr.ru/post/247017/ Разобрался как в CLion для Arduino писать.
Во-первых большое спасибо! С марта очень часто заходил к вам в ожидании этой новости. Наконец не надо будет запускать виртуалку с линуксом для отладки C. (в OS X с этим не все просто...)
А поддержка Makefile планируется? Всетаки они тоже… популярны ;)
Планируется (http://youtrack.jetbrains.com/issue/CPP-274). Мы пока не решили, что делать раньше Makefile или qmake. Зависит от пользователей и их запросов, на самом деле.
Проголосовал за Makefiles. Старый добрый unix way… )
Уже даже ленивый успел перейти на генераторы :)
Удивите всех — сделайте поддержку qbs (в QtCreator-е до сих пор в зачаточном состоянии, а очень жаль)
поддержу эту мысль; но — qbs не столько система сборки, сколько еще и система описания проекта, отслеживания зависимостей, плюс она предполагает множество своих собственных вещей (определение, допустим, qrc файлов для сборки)… опять же, выполнение javascript-а внутри IDE.

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

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

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

subproject1/*/CMakeLists.txt

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

мимо- пользуюсь Qt Creator последние 3.5 года для всех C++ проектов
UFO just landed and posted this here
Сразу выключайте плагины, которые вам не нужны. У меня, например, выключено не меньше половины плагинов поддержки всего разного, так что даже вкладки Design нету, а IDE летает, как птичка.

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

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

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

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

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

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

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

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

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

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

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

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

Использование готового бакенда Clang, того же самого, что используется при реальной компиляции — это просто манна небесная для разработчиков, плюс возможность подсвечивать нетривиальные ошибки еще на этапе набора кода.
Редактор 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), которые наизусть не помнишь — такого очень не хватает
В смысле что понимает, что там будет std::vector, но без специализации? То есть, не покажет, что например front() будет возвращать int&?
Да. Просто reference написано. А у push_back в параметрах value_type&.
В Eclipse CDT работает. Парсит код самостоятельно.
Вот в посте пытались как раз это написать. Интеграция с cmake (автоматическое обновление проекта), навигация по коду, кодогенерация, рефакторинги всевозможные, анализ кода с подсказками, как найденные проблемы исправить. А еще есть встроенные VCS и таск-треккеры.
Интеграция с CMake есть везде.
Навигация по коду есть везде.
VCS и таски есть много где.

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

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

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

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

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

$ yaourt -S clion

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

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

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

Прошу слишком больно не бить — это первый PKGBUILD, могут быть дикие косяки
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)
Early Access Program build


Поправил описание пакета с учетом замечания
Спасибо. А вообще круто ) Были уже интересующиеся, так что надеемся, что кому-то пригодится.
Всё хорошо, но почему на платформе windows CLion поддерживает «только стандартный» mingw? Неужели в 64-битном TDM-GCC mingw «нестандартный»?
А когда примерно? В EAP ждать не стоит?
Пока не подскажу. Будет зависеть от того, насколько активно пользователи будут просить (там вот есть возможность проголосовать за ишью). И насколько много будет других более приоритетных задач.
И где/как голосовать?
Vote кнопка есть в описании ишью.
Ну или просто начните тайпать vote. Youtrack умный — он поймет.
Кстати, может кто ни будь подсказать, как юзать GDB если компиляция проводилась Clang?
Ругается что not in executable format: File format not recognized
Какая ОС? Какой файл (библиотечный может)? GDB бандленый или какой-то другой? В общем нам бы побольше деталей. Можно сразу в трекер: youtrack.jetbrains.com/issues/CPP. Постараемся разобраться. Спасибо.
Тот который в комплекте с 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
Ходят слухи, что исправлена еще два года назад (баг по ссылке — RESOLVED FIXED)… Если нет, то надо его переоткрыть с новыми данными.
Разобрался, просто надо добавить флаг -dwarf-2, и из консоли GDB дебажит теперь корректно, и тот который у меня в комплекте с mingw32-dwarf2 идет и встроенный в CLion
В самой IDE еще не проверял, но уже хоть что то
У меня на Ubuntu 14.04 на довольно крупном проекте ведет себя очень неотзывчиво, сначала индексировались файлы 15 минут, сейчас на любой введенный символ идет заметный отклик в секунды полторы, автодополнение по ., ->, :: с еще большей задержкой выходит. Зато Go To Definition/Declaration быстро :-)
Когда подтупляет на печати символов или автодополнении, попробуйте снять снепшот (http://devnet.jetbrains.com/docs/1087) и заслать нам. Посмотрим, что там происходит.
Можно прямо на clion-support слать?
Еще заметил, что у меня с определенной регулярностью валятся StackOverflowError в Event Log (отослал через IDE Fatal Errors прямо внутри CLion).
Да, спасибо. Для связи с нами есть треккер (http://youtrack.jetbrains.com/issues/CPP), саппорт, форум (http://devnet.jetbrains.com/community/clion?view=discussions). Выбирайте, какой удобнее.
Я долго пытался залить memory snapshot и CPU profiling data через ftp put, но почему-то не получилось в итоге, отваливается по тайм-ауту после отправки put.
Можно расшарить. Интереснее правда CPU snapshot, чтобы посмотреть, где и что подтупляет. Но и memory положите заодно.
регулярностью валятся StackOverflowError в Event Log

Не жмоттесь на оперативку. Виделил JVM больше памяти — избавился от 90% ошибок.
Тем временем IDE продолжила течь и начала кидать OutOfMemory не через 5 минут, а через 15.
CLion у меня не валится пока. Это я к решению проблемы утечек с помощью выделения большего объёма памяти.
У меня не течёт CLion (по крайней мере не заметно). Просто ему изначально мало памяти по дефолту выделено, и исключения валятся в лог со скоростью 2-3 в секунду на пустом проекте. В текущем билде нет vmoptions для 32 бит, нужно самому создать его.
Не пользуюсь Windows, а на Linux всё вполне хорошо.
Это сделано для того, что бы у вас было время подумать :-)
Помнится у меня с IDEA + C++Plugin такая же проблема была, на MacOS X
Особенно если Include от boost добавить
Где-то есть опечатка или неудачный выбор слов, потому что здесь указано
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,

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

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

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

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

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

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

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

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

к примеру

GetSomeValue в классе SomeClass

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

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

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

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

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

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

вот, сделал (живой) скриншот: gyazo.com/df62e34cd54ed77c8a8f1ed415798e08
1. Насколько мне известно, эта комбинация не кастомизируема. Если считаете, что удобнее два shift жать — создайте issue, обоснуйте и получите. Но это очень тонкий вопрос, вряд ли аргументы подберёте, хотя кастомизацию этой комбинации можно попробовать выпросить.
2. По поводу Must have опять таки терзают меня сомнения, мне никогда такое не требуется и действительно полезный кейс сходу в голову не приходит. Если ищу по слову, то слово отделено от других каким-либо разделением.
3. Сам часто работаю либо в вертикальной ориентации монитора, либо с разделением. Если используется разделение, то его достаточно сделать один раз и далее перекидывать вкладки хоть хоткеями, хоть мышкой.

По поводу комментария ниже. Обычно надо не открытый .h файл держать, а синхронизировать изменения в .cpp с .h. Как эта синхронизация будет осуществляться в CLion ещё не вникал, но у меня на неё большие надежды возложены:-)
>хотя кастомизацию этой комбинации можно попробовать выпросить.

Че за бред? Вы думаете оно мне надо?
У меня есть все что нужно для работы, Мое дело работать, а не ходить по «каким-то» сайтам, и выклянчивать фишечки в проект которым судя по состоянию я еще долго пользоваться не смогу.

Единственное чем интересен мне этот проект, что его делают наши, и хотелось бы их поддержать, и сказать свое мнение(человека который уже много лет проф. работает ТОЛЬКО на с++ )

если смежите дать необходимый минимум, то только тогда, люди которые работают — а не балуются, обратят на это внимание.
BiTHacK извиняюсь, я думал вы автор поста :) А вы просто хороший человек!
В дополнение к разделению экрана хотел сказать, что в мире java, c# это может не так удобно, а вот в с++ есть же .h и .cpp обычно разделение идет именно между ними.
разделение там есть, просто нет возможности его активировать перетаскиванием мышкой за таб, — из контекстного меню активируется легко и можно для одного файла даже несколько табов сделать
Такая штука уже довольно давно в трекере AppCode обсудается (http://youtrack.jetbrains.com/issue/OC-2581). Можете добавить голос)
В целом между .h и .cpp можно переходить с помощь Go to Related File действия (ну и в выбранной keymap будет key-binding на него, ест-но). + Navigate to Declaration/Definition, Go to superclass и другие действия по навигации.
Участвовал в программе EAP, вчера скачал публичную версию, ни в первом ни во втором случае, не заработало отображение STL-контейнеров.
В саппорт писал и скриншот прилагал, мысль была в том, чтобы в IDE просто настроили разрешение подгрузки своих настроек для gdb, например, из .gdbinit, как в netbeans или из отдельного окна, как в qtcreator, иначе так не поотлаживаешься…
image
Да, это оно. К сожалению, не успели к первому публичному EAP. Но приложим усилия к следующим версиям.
Вангую… у вас 64 битная система! Добавьте в clion.sh «LANG=en_US.UTF-8». Ну и локаль сгенерировать предварительно не забудьте, если её у вас нет.
А можно ли как-то задать аргументы, с которыми CLion будет запускать CMake для моего проекта?
Прямо команде передать аргументы пока нельзя (http://youtrack.jetbrains.com/issue/CPP-188). Но можно стандартные параметры задавать в CMakeLists.txt или выставлять в CMakeCache (есть вкладка в окошке tool window). Если хочется свои добавить параметры, то через workaround добавляете параметры и выставляете их в CMakeCache.
Интересно, а можно ему подсунуть фиктивный CMakeLists.txt?
Примерно с таким содержанием:
1. установка всех параметров, которые обычно в командной строке передаются
2. установка build path, а то CLion все прячет в свой .clion/system/…
3. include настоящего CMakeLists.txt

По идее должно сработать. Попробуйте и поделитесь опытом )
Еще кстати есть вариант через add_subdirectory.
Пункты 1 и 3 сработали. Понадобилось всего две строчки:
1. set(CMAKE_SOURCE_DIR моя_папка)
2. subdirs (моя_папка)

В итоге проект смог завестись.

Но некоторые критические вещи побороть пока не смог:
1. Отключить генерацию разных build_type. Я не понимаю с разными работать. И мне оно совсем не нужно. Я всегда пользуюсь только одним. Если я захочу поменять -> то я его этот один поменяю и всё равно продолжу пользоваться всегда одним.

2. Как следствие первого -> переместить build_dir в моё место. Сейчас это глубоко в .clion/system/cmake/…

3. Добавить все .h файлы в проект. В ютрекере пишут что надо их добавлять в cmake, но я не понимаю зачем. cmake генерирует Makefile со всеми зависимостями от .h файлов. То есть самому cmake они не нужны. Не понимаю что мешает CLion считать хедеры внутри папки проекта — проектными файлами.

4. Скомпилять весь проект. Сейчас CLion предлагает мне компилять каждый из моих 200 таргетов по одному. Я просто с ума сойду тыкать на столько кнопок. А как только я поменял один .cpp файл мне всё это перетыкивать опять? Раньше я вызывал 'make -j', но теперь это затруднительно, т.к. build_dir неизвестно где (см. пункт 1).
Номер 3 победил так:
FILE (GLOB_RECURSE clion_all_headers ${CMAKE_SOURCE_DIR}/*.h)
ADD_CUSTOM_TARGET(all_clion
    SOURCES ${clion_all_headers}
)
1. Не совсем поняла.

2. укажите в CMake файле, какой build_dir через CMAKE_RUNTIME_OUTPUT_DIRECTORY (позже вероятно сделаем это как-то через IDE — http://youtrack.jetbrains.com/issue/CPP-96)

3. Пока что надо включать в CMake (http://youtrack.jetbrains.com/issue/CPP-270). Есть приятный бонус от CMake — если включаете .cpp, то .h с таким же именем не надо включать.

4. Есть такая проблема (http://youtrack.jetbrains.com/issue/CPP-158). Заходите повоутить.
1. А, все, поняла о чем Вы. Утро, сорри)
Мы генерируем проект для всех CMAKE_ BUILD_TYPE (Debuge, Release, MinRelease etc).
Соответственно, пока такой возможности нет, но можно описать свой кейс здесь: youtrack.jetbrains.com/issue/CPP-812
Команда на два продукта AppCode и CLion — общая. Да и код-база сильно пересекается. Так что совсем только один CLion делать все равно не получается. А ведь есть еще платформа, которую много людей делает, так что их тоже надо учитывать.
Вообще в команде 12 человек. Один из них правда только вчера пришел ) А еще один всего неделю назад. Так что мы растем!
Для запуска под Win 32bit:
— Устанавливаем JRE;
— Переходим в папку JetBrains\CLion 138.1965.18\bin\;
— Внутри clion.bat в начале файла до метки :jdk указываем SET JDK=c:\Program Files\Java\jre1.8.0_20\, остальные условия отключаем;
— В этом же файле заменяем SET BITS= на SET BITS=32
— Делаем копию файла clion64.exe.vmoptions с именем clion32.exe.vmoptions
— Внутри clion32.exe.vmoptions меняем -Xmx2000m на -Xmx1000m, а также yjpagent64 на yjpagent
Запускаем через clion.bat.
Мои пять копеек.

На маленьком проекте достаточно неотзвчив. Точнее как, видно что используется clang для индексации/автодополнение. Поведение почти совпадает с оным у QtC при включенном Clang парсере.

Сгенерированный getter/setter для
std::string m_foo;

получился таким:
    basic_string<char, char_traits<_CharT>, allocator<_CharT>> const &foo() const
    {
        return m_foo;
    }

    void setFoo(basic_string<char, char_traits<_CharT>, allocator<_CharT>> const &foo)
    {
        m_foo = foo;
    }

никто не забыт, ничто не забыло :)

Далее, заметил, что не различаются. и -> в автодополнении, т.е. код:
std::unique_ptr<int> a(new int);
a.

не показывает дополнение в виде методов reset() и иже с ними. Для следующего кода показывается только а в обоих случаях:
struct Foo { int a; };
std::unique_ptr<Foo> b{new Foo};
b.
b->


Не совсем понятно, зачем в кодогенерации делать деструктор виртуальным по умолчанию.

Хотелось бы увидеть в кодогенерации генерацию стабов для копирования/перемещения объекта

При кодогенерации конструктора с одним параметром неплохо было бы делать его explicit.

Очень понравилось как сделана кодогерация для Override methods.../Implement methods… Но через Override methods можно реализовать и pure-virtual метод, а к нему так же добавляется override. Не криминал, но есть неконсистентность.

Рефакторинг, изменение сигнатуры функции: Preview и Refactor кнопки работают одинаково :) Кроме того, если мы хотим сменить сигнатуру метода, который идёт от базового класса, предлагается поменять его в базовом. Это хорошо, но если есть два и более наследника, сигнатура меняется только в том классе, в котором мы инициировали изменение и в базовом. Другие наследники не затрагиваются.

Подстветка синтаксиса поперхнулась на Лямбдах: habrastorage.org/files/900/3a2/1b4/9003a21b4fa2401db20350e07f460165.png

Говорит об синтаксической ошибке в написании слова chrono в std::chrono :-)

Контекстная справка, типа как в QtC по F1, я там прикрутил stdlib и STL очень удобно. Тут можно подобное сделать?

Вот такому коду не смог сделать Refactor->Extract->Method:
    if (pid < 0) // fork error
        exit(2);
    if (pid > 0) // parent exit
        exit(0);

А для такого:
    for (auto const &record : records)
    {
        const uint64_t id   = get<0>(record);
        const string&  name = get<1>(record);
        // skip
    }

Предложил метод с сигнатурой:
void processRecords(vector<tuple<_T1, _T2>> const records)

Перед данным блоком было:
auto const records = gApp.m_dao->incompleteChunks();

тип:
std::vector<std::tuple<uint64_t, string>>


Шрифты в Linux тоже не ахти как рендерятся. На скрине выше видно.

Ну как-то так… Пока пользоваться не буду только из-за отзывчивости.
Давайте разбираться по порядку:

Про неотзывчивость — а можете cpu snapshot снять (здесь вот написано как devnet.jetbrains.com/docs/1087)? И очень бы хотелось (если сможете) sample project, потому что от проекта много чего зависит. Бывают небольшие, но очень навороченные проекты, с кучей перегруженных методов, лямбд, и пр. Можно попробовать память увеличить IDE (https://intellij-support.jetbrains.com/entries/23395793), возможно, станет лучше.

1. getter/setter генерация и строки — youtrack.jetbrains.com/issue/CPP-743. Известная была проблема, не успели доделать до публичного EAP. Попадет в следующий билд.

2. Первый комплишен — похоже бага. Завели в трекер youtrack.jetbrains.com/issue/CPP-907. Спасибо

3. " не различаются. и -> в автодополнении" — это фича. После комплишена всегда подставится нужное — "." или "->". При этом в списке комплишена показываются варианты для обоих случаев.

4. Про генерацию — добавьте, пожалуйста, фичу в треккер с примерами: youtrack.jetbrains.com/issues/CPP.

5. Про изменение сигнатуры очень полезные комментарии.Спасибо! Завели две баги: youtrack.jetbrains.com/issue/CPP-910 и youtrack.jetbrains.com/issue/CPP-911

6. лямбды тоже в треккере: youtrack.jetbrains.com/issue/CPP-912. Вы не против, что мы туда Ваши скриншот приложили?

7. В CLion есть quick documentation (тоже по F1). Оно пока в начальном состоянии. Есть куда улучшать: youtrack.jetbrains.com/issue/OC-9836

8. «не смог сделать Refactor->Extract->Method» — у кода нет точки выхода в некоторых случаях. Есть третья ветка, не описанная в коде, поэтому и не срабатывает. Если написать:

if (pid < 0)
    exit(2);
else
    exit(0);

То сработает.

9. Можете пример с records целиком в ишью положить в треккере? (Например, воспроизвести на минимальном проекте)?

Вот как-то так. Проблемы есть. Будем решать их по мере возможностей дальше.
Анастасия, по некоторым пунктам чуть позже ответы подготовлю, пока небольшие ремарки и уточнения:
2. Первый комплишен — похоже бага. Завели в трекер youtrack.jetbrains.com/issue/CPP-907. Спасибо


В тексте описания ошибка, у вас std::unique_ptr<Foo> а должен int быть.

При этом в списке комплишена показываются варианты для обоих случаев.


Сомнительная фича. Ок, если что составлю фича-реквест.

youtrack.jetbrains.com/issue/CPP-910


Пока не зарегестрировался, попросите не закрывать. Сампл приготовлю.

Вы не против, что мы туда Ваши скриншот приложили?


Не против, главное что бы не хуже IDEA для Java получилось :)

Есть третья ветка, не описанная в коде, поэтому и не срабатывает.


Ок. Странно, но ладно.

9. Можете пример с records целиком в ишью положить в треккере? (Например, воспроизвести на минимальном проекте)?


Подготовлю.

Вот как-то так. Проблемы есть. Будем решать их по мере возможностей дальше.


Спасибо, что не вынуждаете регистрироваться в трекере, хотя бы для багов.

1. std::unique_ptr а должен int быть — ну в целом то не важно, какой там тип.
2. Пока не зарегестрировался, попросите не закрывать. Сампл приготовлю. — добавьте зампл и переоткроем.

Трекер вообще штука хорошая ) он позволяет нам понять, какие фичи реквесты самые популярные и значимые для пользователей. Так что головалка там не просто так.
А плагин поддержки C|C++ в IntelliJ IDEA есть? Планируется?
Будем думать не раньше, чем после 1.0 релиза.
Подскажите, можно ли по какому-то хоткею увидеть реальное имя типа сквозь все алиасы? Вроде того, как gcc/clang пишут f(T t), [T = std::size_t aka unsigned long long].
Хочется проверить, как автодополнение будет вести себя на сложных шаблонах с метапрограммированием.
Пока не получится увидеть реальное имя. Quick Documentation показывает только на один уровень раскрытое имя.
Я послушал бы, как Вы сделали препроцессор. Не один язык его требует. Не думали сделать общую доку по этому поводу.
Тот же плагин intellij-haxe, у вас по этому поводу страдает.
Как правильно называть-то? «Силайон»? «Клайон»? «Слион» («слон»)? «Клион»?
Чую в руссоговорящем сегменте окрестят сайлоном.
«Клайон»?… «Клион»?

Клён, просто клён. Зачем язык ломать?
А вы не планируете сделать C# IDE в качестве альтернативы VisualStudio?
Кстати, а кодовая база у CLion и ReSharper C++ одна? Как вообще решали такой вопрос — вроде похожие вещи выполняют (интеллектуальная работа с C++ кодом), но должны работать в разных средах (ReSharper C++ под Win и как плагин в VS, а CLion как самостоятельная кроссплатформенная среда разработки).
Нет, кодовая база разная. Все же CLion основам на платформе IntelliJ (тут как раз много с ней общего, и тем более много общего с AppCode, из которого CLion в общем то и вырос). ReSharper — это совсем иной продукт. И команды тоже разные. Но общаемся, передаем опыт )
Эх, очень жаль. Думаю, был бы хороший спрос.
UFO just landed and posted this here
UFO just landed and posted this here
Да. В целом планируются все наши обычные варианты — classroom, academic, open source.
А когда выйдет система контроля версий от JetBrains?
Ну минусуйте-минусуйте, дебилы, а вопрос все равно в силе остается.
Однако, на удивление без пинков запустилось на FreeBSD 11-CURRENT (i386) и даже собрало/запустило hello world (cmake/gdb я сразу перенастроил на системные). Правда затем, при попытке собрать стеллариум, вся среда подвисла: окна не рисуются, ни на что не реагируют, хотя java вроде чувствует себя хорошо (1378M/808M/uwait судя по top(1) из доступных 3 гигов ОЗУ).
Я бы с удовольствием, но под FreeBSD в меню Tools (и на тулбаре) почему-то есть только Capture Memory Snapshot.
Спрошу на всякий случай — а вы выполнили те действия, которые написаны в инструкции, чтобы такой пункт в меню появился?
Вы правы, я хоть и добавил строчку -agentlib:yjpagent в конец bin/clion64.vmoptions (это единственный файл с таким расширением), не посмотрел на число 64, а ведь у меня 32-битная система.

Я слинковал на него clion.vmoptions (а также libyjpagent.so -> libyjpagent-linux.so), и теперь при запуске sh clion.sh оно ругается (т.к. сошка линуксовая):
Could not find agent library yjpagent on the library path, with error: Shared object «libm.so.6» not found, required by «libyjpagent.so»
Эх, видимо, придется все-таки использовать Linux-версию JDK.
Уточнение: при использовании FreeBSD'шной нативной libyjpagent.so, java падает в корку. :-( В общем, надо разбираться…
Увы, поставил из портов java/linux-oracle-jdk18, запускаю как env CL_JDK=/usr/local/linux-oracle-jdk1.8.0 sh clion.sh, теперь java.lang.OutOfMemoryError во все поля при любых настройках.

А вот шрифты в тех диалогах, что удается увидеть, стали поприятнее. :-)
увы, нет. Плагин такой, насколько я знаю, никто тоже пока не пишет. Как давний любитель perl, грущу, но понимаю.
Как насчет поддержки параллельного программирования: OpenMP, CUDA/OpenCL, pthread…?
Также интересует возможность интегрирования сторонних компиляторов, например от Интел.
Это все не в первой версии. После 1.0 можно будет о чем-то таком думать.
anastasiak2512, реализация поддержки qmake будет автоматически обозначать поддержку компилятора MS VC или это отдельная фича? Что входит в реализацию «Build tool»?
Microsoft Visual C++ это вообще не к нам, это скорее к ReSharper C++. Сейчас не понятна надобность его поддерживать в CLion.
Но другие компиляторы со временем тоже будут поддерживаться. В поддержку входит парсинг сообщений от компилятора в IDE и понимание путей до include-ов и другой полезной информации.
Билд-система в IDE означает, что IDE позволяет открывать соответствующие проекты, понимает их структуру, умеет делать какие-то автоматические действия с этой структурой, берет из соответствующих файлов (в случае CMake — CMakeLists.txt) информацию о параметрах, таргетах, опциях компиляции (С++11, например) и др. Плюс IDE знает о каких-то особенностях билд-системы и с ними умеет работать (например, для CMake — это работа с CMakeCache сейчас).
Специально для своего проекта по докторской написал CMakeLists.txt (использовал Makefile). Чуть-чуть поковырял и первое впечатление очень хорошее :)





Раньше совместно с cmake использовал netbeans, но он что-то начал есть память… Потом перешел на Eclipse + make. Потом сполз в vim.

Буду смотреть дальше. Порадовала возможность быстрой установки плагинов (понадобилось для подсветки в Lua)
Порадовало наличие командной строки GDB. Только вот нет реакции на Enter, который в консольной сессии отладки означает повтор предыдущей команды
Заведите ишью в трекере. Возможно сделаем чуть позже.
Установил версию для Windows. Не могу настроить mingw toolchain. mingw установлен в C:\mingw, указываю этот путь в поле «Use MinGW home», пишет «MinGW not found». Можно узнать подробнее какой конкретно MinGW нужен и как определяется его наличие в каталоге? Может там каких файлов у меня не хватает.
MinGW not found скорее всего означает проблему с определением версии. MinGW поддерживается только 3.20. Ну и Mingw-64 не поддерживаем (http://youtrack.jetbrains.com/issue/CPP-668)

При этом известны вот такие проблемы: http://youtrack.jetbrains.com/issue/CPP-785 от пользователей. Но мы сегодня честно целый день пытались, так и не смогли воспроизвести. Но возможно у вас тоже заработает mingw с sourceforge ветки, а не с mingw.org
Да, у меня mingw-64. Спасибо за ответ!
Неужели количество пользователей, которым хотелось бы иметь поддержку mingw64, настолько мизерно, что мы собрали только 28 голосов за несколько дней? :-)
Под Linux системный gcc определился, простые проекты собирает. А есть возможность указать опции cmake, которые будут использоваться при конфигурации проекта? Без указания опций мой проект не собирается (cmake завершается с ошибкой).
View -> Tool Windows -> CMake и в появившемся окошке вкладка Cache
Там можно менять только то, что есть в сгенерированном кэше cmake. Добавить переменные я туда не могу.

Мне надо запускать проект с несколькими опциями примерно так:
cmake -DVAR1=value1 -DVAR2=value2 <path_to_sources>

Переменных VAR1 и VAR2 в кэше нету.
Ну первый вариант подходит только для тестирования по понятным причинам: добавлять установку этих переменных в сам проект нельзя, они зависят от среды сборки.

Второй вариант может работать, но это неудобно, и не факт что всегда будет работать. Т. е. сначала будет запускаться cmake, отрабатывать наполовину, создавать половину кэша, потом пользователь вручную добавляет нужные переменные в кэш, потом перезапускает cmake.

Проще было бы, если бы была возможность задать параметры cmake (как в QtCreator). Ну и каталог сборки неплохо было бы самому выбирать, а то сейчас это всё прячется где-то в ~/.clion10
Спасибо!
Два важных вопроса:
1) Плагин для удобной сборки ядра Linux планируете разрабатывать? :)
2) Почему талисман — морской котик?
1) Вы можете и сами написать плагин.
2) Потому что мы читаем CLion как sea lion )
На windows с первой попытки не заработало
открыл примерно такой cmake list
cmake_minimum_required(VERSION 2.8)

project(SomeName)

include(Settings)

SET(BUILD_SHARED_LIBS)#pugixml
ADD_SUBDIRECTORY(${LIBS_DIR}/pugixml/scripts/)
ADD_SUBDIRECTORY(${SOURCES_DIR}/SomeName1/)
ADD_SUBDIRECTORY(${SOURCES_DIR}/SomeName2/)
ADD_SUBDIRECTORY(${SOURCES_DIR}/SomeName3/)


Error:Environment is not selected
+ в ивентах ошибка для hg 9:23:50 Could not execute hg status command: [abort: path contains illegal component: .hg\wlock]
mingw на машине нет, хотелось посмотреть функционал cmake
MinGW или Cygwin надо все же поставить. Такие requirements. Если откроете Settings | Build, Execution, Deployment | Toolchain — там проверка есть минимальной конфигурации, она должна проходить для корректной работы.
Ubuntu 14.04, GCC 4.8.2, при сборке через консоль все ок, при сборке через CLion на этапе линковки начинает ругаться на статический константный член в паре классов, мол нет определения, только объявление, хотя по стандарту все ок.
Ума не приложу, почему так происходит, собираю из одного и того же CMakeLists.txt. Правда я такую штуку уже наблюдал за GCC, когда такой код валился на этапе линковки:
static constexpr double = 10.0;
, а такой нет:
static constexpr auto = 10.0;

Но какие могут быть различия во флагах при сборке через cmake --build. --target target-name в консоли и CLion, кроме того что разный CMake используется (забандленный против системного)?
Сейчас вот проверила на макоси — проблемы нет. Можете зарепортить в трекер с проектом небольшим для примера и описанием environment-а, который используется?
Пока не получается воспроизвести в маленьком проекте.

Тут видимо какой-то косяк кода или компилятора, вопрос только в том, почему он провляется не всегда.
В моем случае определение не нужно, поскольку константа используется только внутри типа, и in-class initialization + constant propagation должны работать по стандарту.
Объявление было бы нужно, если бы где-то например брался адрес этой константы, но таких мест в коде нет.
Прошла пара дней использования CLion вместо QtCreator'а на собственном проекте (подменять им вторую используемую среду aka Source Insight не стал — пункты 2 создает слишком много мусора в чужих проектах, пункты 1 и 3 снижают привычный уровень читабельности чужого кода). Многое понравилось, есть и пожелания/вопросы:

1. Не нашел, как вынести quick definition в отдельное окно наподобие того, как это делает Source Insight. (да, он еще и некую схему взаимосвязей показывает, но для работы над своими проектами это оверкилл, вот чужие им смотреть — перебор). А хотелось бы. Всплывающее окно — неудобно.

2. CMake должен быть отключаем в пользу «никакой» системы сборки. ) поддержка qbs'а из коробки не столь важна.

3. И хотелось бы видеть «кальку» на самую гиковскую фичу Source Insight — отображение логических операторов в их абстрактном виде (!= в виде ˜, && как • итд), (можно еще вспомнить emacs'овский pretty-symbols, делающий примерно то же + всякие извращения в виде подмен lambda => λ итд).
Не по порядку, но про все:

2. На какую-то систему сборки мы всегда будем полагаться, будь то CMake или какая-то другая, которую мы поддержим. Файлы, которые ни в каком проекте, открыть конечно в IDE можно (File | Open), но никакие smart действия (умный комплишен, рефакторинг, анализ кода, др.) там будут не возможны, просто потому что у IDE не будет полной картины.

1. В целом не очень понятно, чем не удобно всплывающее окно, его всегда можно вызвать через шорткат, а зачем ему постоянно быть на экране — не ясно.
3. Довольно интересное предложение.
Но и 1, и 3 можно закинуть в наш трекер с описанием и примерами, а мы над ними подумаем на будущее.
1. При «разборе» чужого кода, когда оплачивается результат, а не время, порой хочется как можно меньше времени тратить на запоминание сущностей. «А что это за write_to_portALLvars()?» — тык по названию, context window показывает кусок кода, где оно определено. А необходимость каждый раз нажимать сочетание клавиш заставляет чувствовать себя забывчивой ленивой обезьяной, которая не может запомнить структуру чужого проекта с гитхаба, который то и дело допиливается в обеденный перерыв )

Возможно, есть способ «вытащить» этот функционал в плагин?

2. «Какая-то» система — это открытый путь в файловой системе + все пути, распознанные из #include; если разработчик инклудит код из мест, доступных через пути, то он ССЗБ, конечно же, но и прописать эти пути есть куда — у вас создается папка .idea. Не смотрел, что внутри, но полагаю, что и дополнительные пути туда «загнать» можно.

1,3 закину в трекер чуть позже.
1. На первый взгляд плагин такой возможен.
2. Вся нужная информация требует какой-то структуры и упорядочивания, а это и есть билд-система, по сути то. Чем изобретать свою, решено было использовать наиболее популярные в коммьюнити.
В quick start в системных требованиях написано: Windows 7.0 x64, 8.0 x64 Linux 64-bit. Т.е., на XP, или на 32-bit Windows и Linux его не поставить?
Как и 64-битную JVM, для которой требуется 64-битная ОС, наверное.
У меня с горем пополам получилось запустить даже на 32-битной FreeBSD, с родным OpenJDK. Правда, в «пополаме» этом горя пока больше, чем профита, увы.
Первые впечатления очень хорошие, но столкнулся с некоторыми сложностями. «Refactor -> Rename» отказывается работать на машинке с OSX 10.10. Кнопка «Refactor» не активируется. В видео примере при создании новых файлов внутри проекта упускается добавление их в CMakeLists, добавление происходит автоматически?
Про рефакторинг на 10.10 — что-то странное, пришлите sample prj в саппорт.
Пока добвление вручную, планируется автоматическое — youtrack.jetbrains.com/issue/CPP-27
Это голый проект с попыткой пошагово воспроизвести демонстрационное видео.

image
Sign up to leave a comment.