четверг, октября 06, 2005

Среда разработки Code::Blocks Studio

Code::Blocks - это кроссплатформенная, бесплатная, Open Source среда разработки. В ней есть многие приятные вещи, которые современная среда разработки обязана уметь. Class browser, code completion, фолдинг (folding).

Есть импорт воркспейсов Microsoft Visual Studio и проектов Dev-C++.
Насколько мне известно, популярная среда разработки Dev-C++ умеет работать только с GCC-компиляторами. Так же как и у Code::Blocks у них есть версия с MinGW GCC, есть версия вообще без компилятора. Но к Code::Blocks еще можно подключать другие (не обязательно GCC) компиляторы через приятный интерфейс.

Причем для разных проектов можно подключить разные компиляторы, можно для одного и того же проекта попробовать различные компиляторы. Последнее должно быть особенно удобно для тех, кто разрабатывает open source проекты, которые просто обязаны компиляться всеми более-меннее распространенными компиляторами. Плюс переход на другой компилятор можно произвести очень быстро. Выбираешь в списке другой компилятор, работаешь с ним - не понравилось? Возвращаешь все обратно, настройки все сохранились. Никаких дополнительных сред разработки скачивать не надо, привыкать к ним не надо.
Список компиляторов, с которыми умеет работать Code::Blocks:

Code::Blocks позволяет держать разные настройки по умолчанию для разных компиляторов.

Также различные настройки для различных компиляторов возможно проставить для каждого проекта индивидуально.

Если работа над Code::Blocks будет продолжаться в том же духе, он сможет составить весьма достойную конкуренцию Microsoft Visual Studio. Дело в том, что не так давно Microsoft выпустила Microsoft Visual C++ Toolkit 2003, который, в том числе, содержит консольную версию своего компилятора, которые они используют в Visual Studio .NET 2003 Professional. Плохо в нем то, что он - компилятор командной строки, сколь-нибудь большой проект таким образом разрабатывать сложно, все равно нужно какое-то средство разработки. И если раньше выбора особенного не было и приходилось работать с Visual Studio, то теперь есть Code::Blocks, появился выбор.
Но у меня с ним обнаружилась одна небольшая засада. Компилятор из тулкита не понимает пробелы в именах файлов и названиях директорий. Я же люблю все инсталлировать в директорию Program Files. Поскольку Microsoft утверждает, что это точь-точь тот же компилятор, что используется в Visual Studio .NET 2003 Professional, то, я думаю, что это среда Visual Studio заключает названия директорий в кавычки прозрачно для пользователя. Что-либо переделывать мне было лень, так что скомпилять я ничего так и не скомпиляла. В багтраке Code::Blocks есть бага по этому поводу, но когда они ее поправят и поправят ли, большой вопрос.

Еще мнение о Code::Blocks:
Code::Blocks Studio

Ссылки по теме:
Free Windows Editors
Dev-C++
Microsoft Visual C++ Toolkit 2003

Technorati tag:

39 коммент.:

Maniac комментирует...

> Плохо в нем то, что он - компилятор
> командной строки, сколь-нибудь большой
> проект таким образом разрабатывать сложно

Большие проекты как раз собираются в основном из командной строки (та же Mozilla). Обусловлено это тем, что именно в большом проекте надо не только код компилировать, но и запускать всякие препроцессоры и постобработчики, специфичные для проекта, поэтому зашить эту логику в make-файл и выполнять автоматически удобней, чем ходить по GUI и запускать программы в нужном порядке.

Ну и не в последнюю очередь из-за того, что большие проекты частенько рулятся не вполне переносящими GUI хакерами :-).

Sergey_ комментирует...

"Кроссплатформенная среда" звучит конечно круто. Но поддержаны только Linux и Windows. А как же, например, SunOS?!

Alena комментирует...

>А как же, например, SunOS?!
Я думаю, можно скомпилять Code::Blocks и заставить его работать в связке с gcc. Народ в форуме пишет, что им удавалось его заставить работать на MacOS, на FreeBSD.
Вообще Code::Blocks расширяемый, для этого используется система плагинов. Плагины используются в том числе для добавления поддержки новых компиляторов.

klim комментирует...

Большие проекты как раз собираются в основном из командной строки (та же Mozilla).

Неправда. Там используются automake и autoconfи еще некторое количество perl-скриптов. Или Вы думаете, что makefile'ы они вручную пишут?

Maniac комментирует...

Это не я думаю. По-моему, разница между тем тем, что я написал - использование скриптовой билдовой среды вместо GUIшной - и тем, что вы из нее домыслии - название конкретных тулзов - очевидна. Думаю, также очевидно, что цель моего комментария заключалась не в том, чтобы показать, что я круто наизусть знаю, как компилируется Мозилла, а дополнить статью информацией, которую я посчитал нелишней.

Знаете, не все комментарии пишутся из агрессивного буквоедства...

Pavel комментирует...

Я запускал под Mac OS. Ничего сложного. Честно проще чем под Винду использовать MingW и Codeblocks.

Билды здесь:
http://developer.berlios.de/project/showfiles.php?group_id=5358

Sergey Miryanov комментирует...

Знаю что пост очень старый, но CodeBlocks проигрывает студии по удобству в разы :(

Евгений Железников комментирует...

sergey miryanov
Какой билд кодблокса проигрывает какой версии студии и чем, и насколько вы считаете это смертельным?

Sergey Miryanov комментирует...

Евгений Железников
Нет, ничего смертельного нет. Просто это тот случай когда действительное не соотносится с желаемым.

Первым впечатлением было - как вообще в этой штуке можно писать?? Сначала не хватало smart tabs - имено это на 80% заставило написать комент. Затем я нашел smart tabs в настройках - стало легче, но если честно выглядит просто ужасно.

Дальше - не возможность скрывать окна, как в студии - я конечно понимаю что это мои проблемы - но смотреть на код как из амбразуры не приятно.

Дальше - не возможность смотреть отдельно ошибки и предупреждения.

Дальше - ужасный красный цвет сообщений об ошибках, я не бывшая школьница чтобы меня ими пугать.

Дальше - оригинальный способ сообщения об ошибках. Не скажу что это плохо или хорошо - но требует как миниум привыкания.

До дебага я не дошел, т.к. пока мне проект отлаживать не приходиться.

Как я уже сказал - ничего смертельного нет - но осадочек остался.

Да, и если вы как то причастны к разработке продукта - то я не смог заставить работать source formating.

Версия - 8.02 от 28 февраля 2008.

Евгений Железников комментирует...

sergey mirianov
Первым впечатлением было - как вообще в этой штуке можно писать??

Шутите или как?

Сначала не хватало smart tabs - имено это на 80% заставило написать комент. Затем я нашел smart tabs в настройках - стало легче, но если честно выглядит просто ужасно.

Smart tabs - что имеете ввиду? Я под этим понимаю сохранение количества табов в отступе от начала строки при переходе на следующую строку. Если правильно понял, не понимаю, как вы это не нашли сразу и в чем разница с VS (и какой, опять же - не работал с 2008, в 2005ой вроде как все так же, или вы о tomato's visual assist?)
Настроить, что использовать - пробелы или таб - в настройках редактора.

Дальше - не возможность скрывать окна, как в студии - я конечно понимаю что это мои проблемы - но смотреть на код как из амбразуры не приятно.

F2 скрывает окно с закладками компилятора/дебаггера, вроде как есть шорткат и древо проекта скрывать, ну и как бы любое окно можно масштабировать, закрыть или переместить, включая вкладки, если что не устраивает и нужно расширить амбразуру.
Или вам именно без autohide совсем никак?

Про разделение предупреждений и ошибок - есть такое. Среда развивается, если вам нужны конкретные фичи быстрее - пишите в форум разработчиков или найдите вечер имплементировать руками и тоже забросить сделанное на форум.

Что не так с сообщением об ошибках?

Дальше - ужасный красный цвет сообщений об ошибках, я не бывшая школьница чтобы меня ими пугать.

Цвет и правда не настраивается. Но знаете ли... не обижайтесь, пожалуйста, но складывается ощущение, что вы не свободную среду разработки пробуете, а выбираете тряпку в тряпичной типа "бутик". Где мужыцкая брутальность и олдскульно-блокнотно-программистская приспособляемость? После таких оценок становится как-то страшно за следующее поколение беспомощно-эстетских "программистов", выросших на продукции ms.

Евгений Железников комментирует...

p.s. забыл:
К разработке отношения не имею.

Source formatter настраивается в settings - editor - source formatter

Sergey Miryanov комментирует...

Не smart tabs, а smart tab-switching, ошибся.

Олдскульно-блокнотно-программистской приспособляемостью я переболел, спасибо.

А выбираю я не шмотке в бутике, а среду в которой я буду проводить по 8+ часов в день и я хочу чтобы она была удобной и предсказуемой.

Думаю, продолжать диалог не конструктивно.

Sergey Miryanov комментирует...
Этот комментарий был удален автором.
Евгений Железников комментирует...

sergey mirianov
"Удобная и предсказуемая" коррелируется с освоением и привыканием к особенностями (при желании как минимум полазить по настройкам, чтобы найти F2 и настройки source formatter, который вполне работает).

Мне кажется странным, что вы ставите вопрос именно с "выбором среды для 8+ часов", сравнивая пофенечно с visual studio. Над vs много лет работает наемная армия, над кодблоксом - отряд повстанцев, надо ли сопоставлять человекочасы, вложенные средства и доводку юзабилити?

Имхо, выбор может быть таким: или у вас есть средства на лицензию вижуалстудии (если по рабочим/нравственным/религиозным соображениям не подходит пиратка) или вам нужна хобби-среда/кроссплатформа и не устраивает eclipse. То есть то, что студия удобнее, мощнее и доработаннее напильником, как бы не обсуждается, у C::B team, в отличие от разрабов Blender или OpenOfficeOrg, нет постоянных спонсоров для оплачиваемого фуллтайм. Code::Blocks - "народный" проект, и в todo-листе много архитектурных вещей, среда все так же активно разрабатывается, как и полтора года назад, конкретные юзабилити-мелочи могут быть все еще не доведены.

Ждете конструктива, начав с "проигрывает студии по удобству в разы" и "как вообще в этой штуке можно писать"?
Спрашивайте конкретно - постараюсь ответить так же конкретно и без грубиянства. А пока получилось вот как-то так.

Евгений Железников комментирует...

sergey mirianov
Будет лучше всего, если вы четко сформулируете, что не нравится - по пунктам с указанием, как было бы удобнее и лучше, и отпишитесь на форуме разработчиков, либо, если не хотите, пишите сюда (или digited(сбк)yandex.ru), и я отправлю. Code::Blocks - тот случай, когда user feedback нужен и работает.

Алёна комментирует...

2Евгений Железников:
Ждете конструктива, начав с "проигрывает студии по удобству в разы" и "как вообще в этой штуке можно писать"?

Сергей высказал своё личное мнение по удобству пользования Code:Blocks'ом. И это штука довольно субьективная. Так что спорить тут бесполезно. "На вкус, на цвет" как говорится...

Евгений Железников комментирует...

алёна
я неправильно понял человека, уладили почтой.
Попробую связаться с разработчиками по основным неустраивающим юзабилити-пунктам.

Анонимный комментирует...

Забавно читать Евгения Железникова, настоящий патриот Code::Blocks :)

У меня проблема с пробелами, о которой говорила Алена. Я скачал Code::Blocks c MinGW, так он этот MinGW туда же куда Code::Blocks ставит, я установил в C:\Program Files\CodeBlocks\MinGW, а makefile wxWidgets'а с параметром clean не умеет работать с командами, в путях которых содержатся пробелы. Я захожу в C:\Program Files\wxWidgets-2.8.7\build\msw и пишу
mingw32-make.exe -f makefile.gcc USE_XRC=1 SHARED=1 MONOLITHIC=1 BUILD=release UNICODE=1, а потом
mingw32-make.exe -f makefile.gcc clean USE_XRC=1 SHARED=1 MONOLITHIC=1 BUILD=release UNICODE=1
и мне пишет:
"C:/Program" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
mingw32-make: *** [clean] Error 1
кто-что знает по этому поводу помогите вернуть пространство на жестком диске :)

Анонимный комментирует...

Создал тестовое приложение на основе визарда wxWidgets + wxSmith, при комплияции опять выдает ошибку с пробелом :(
-------------- Build: Debug in wxTest ---------------

Compiling: wxTestApp.cpp
Compiling: wxTestMain.cpp
Compiling: resource.rc
C:\Projects\wxTest\resource.rc:3:24: wx/msw/wx.rc: No such file or directory
gcc: Files\wxWidgets-2.8.7\include: No such file or directory
gcc: Files\wxWidgets-2.8.7\lib\gcc_dll\mswud: No such file or directory
windres.exe: preprocessing failed.
Process terminated with status 1 (0 minutes, 10 seconds)
2 errors, 0 warnings

Анна комментирует...

Довольно давно пользуюсь CB, и помоему это замечательная среда разработки. Предпочла ее CodeWarrior, Dev-C++ и Anjuta... Для меня одним из основных доводов в пользу было то, что не приходится "пересаживаться" с одной среды на другую в windows и linux, версии CB для разных операционных систем мало чем отличаются. Вообще, наверное это для кого-то довольно спартанская среда, но лично мне после нее аналогичные продукты от microsoft кажутся слишком раздутыми и загроможденными, ведь большую часть предлагаемых там возможностей я не использую... Возможно, именно поэтому CB лично мне кажется более предсказуемым. И вообще, кому-то это тоже покажется странным, но я стараюсь пользоваться свободным софтом везде, где только это возможно.

Dexter комментирует...

Попробовал эту IDE буквально час назад в связке с MinGW, впечатление очень хорошее. VC 2008 уже так достал своими тормозами, да и глюков в нем хватает (тот же cl стартанул только после танцев с бубном). Если и дальше Code::Blocks будет показывать себя так хорошо, полностью на него переберусь.

Анонимный комментирует...

У КодБлока появился конкурент, КодЛайт http://codelite.org/ первые впечатления очень и очень благоприятные.

Nikolay комментирует...

Вчера первый раз запустил под Windows 7. Выбрал Code::Blocks, так как есть желание попробывать написать простенькое кросс-платформенное приложение на wxWidgets, а Code::Blocks вроде как доступен на интересующих меня платформах (Win, Linux, MacOS). Впечатлениями делиться рано, после VS2008 пока привыкаю...

newstufflover комментирует...

буквально только что поставил Code::Blocks 8.02 на FreeBSD. очень доволен пока что (тьфу тьфу). смотрел на эту IDE эдак с год назад под фрихой -- падала.

_Andrey_ комментирует...

Рекомендую собирать Code::Blocks из репозитория - по сравнению с 8.02 там ОЧЕНЬ много улучшений и нововведений.
Если собирать лень, то на форуме Code::Blocks есть ветка, в которую выкладывают "ночные сборки" для Linux, Windows, Mac OS X.

J3d1 комментирует...

Здраствуйте! Подскажите пожалуйста можно ли в C::B увидеть строку которой будет компилироваться мой target? Из-под Make все компилиреутся нормально (пробую компилить для wince компилятором arm-mingw32ce-g++), а вот в C::B компилится, но возникает зависимость исходника от LIBGCC-0.55.2.DLL хотя в опциях компилятора -fno-exceptions стоит. Как посмотреть строку компиляции? Хелп!

gremlinable комментирует...

Logging: Settings->Compiler & Debugger->tab "Other"->Compiler logging="Full command line"

The NT Visigoth комментирует...

Выдираю вот для себя этот Code::Blocks чтобы получить версию среды в Portable версии. Другим словами куда не кинь папку со средой чтобы всегда запускалась и позволяла удобно работать.

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

может кто-то уже ковырялся и знает, как решить подобный вопрос ?

Александр комментирует...

Здравствуйте!
Возможна ли поддержка 866 кодировки в C::B? Если да, то каким образом настроить?

Анонимный комментирует...

К сожалению версия для MacOS X далека от стабильности, постоянно падает и невозможно работать. Я привык к Code::Blocks в линуксе и я пока не готов перенести все проекты в xCode

gshadow2 комментирует...

Code::Blocks действительно очень удобный, особенно если учесть, что это опенсорс и бесплатно. Единственный его недостаток - отладчик. К сожалению некоторые вещи в нём сделаны неудобно (особенно просмотр переменных наводя мышью) и есть разные глюки. Ощущение, что у них не хватает людей на исправление недостатков.

Анонимный комментирует...

Добрый день.
Есть такой вопросик по Code::Block
Если использовать wxSmith, то при компиляции выдает ошибку :
: wx/dialog.h: No such file or directory|

Подскажите пожалуйста как ее исправить ?

Анонимный комментирует...

Я тоже сторонник независимого IDE, одной рабочей среды для работы с разными компиляторами и платформами, поэтому сам сделал себе такую среду (см. alexklm.ru)и ею пользуюсь. Вот только хэлп писать лень и программу доводить до ума тоже, да и не профессионал я, а любитель. Об этом говорит хотя бы то, что о Code::Blocks Studio я услышал впервые сегодня. :)

Айвар Белов комментирует...

Только вот попробовал Code::Block с рядом установленной студией 2013. Могу сказать, что я скорей всего перейду на Code::Block. Очень понравился. Я начинающий, но уже успел освоить студию в общих чертах. Запустив Code::Block, сразу освоился без проблем. За 5 мин. Сразу перечислю что понравилось в отличии от студии: 1) Прога мало весит. 2) Можно компилировать тут же созданный пустой доккумент срр, и не надо создавать громоздкий проект. 3) В редакторе кода, сразу имеется нумерация строк, в студии надо глубоко рыться в настройках чтобы вывести это. 4) Разноцветный, и весёлый, веселей писать), а не унылый как в студии. 5) Очень понравился вывод ошибок - таб "Build Mesages". Показывает ошибки и довольно точно объясняет в чём ошибка. В судии сделано не по одной а скопом, сразу все ошибки показывает, громоздко и не понятно в чём там ошибки, объясняется отдалёнными намёками. Единственное что лучше в студии, это то что ошибка показывается в реальном времени, подчёркивается волнистой линией как правило послеидущий знак, объект, функция. Вот главное преимущество студии. Если в Code::Block это добавят, про студию можно будет потихоньку забывать. Это всё правда субъективное мнение, в основном по удобсву юзанья. Естевственно не известна ввиду не опытности насыщенность данной проги полезным наполнением - плагами и библиотеками. Тут ничего сказать не могу, знаю что у Майков с этим очень не плохо, отсюда и вес студии, но не факт. Кто знает - скажите.

Родион Коган комментирует...

Начал проект в MS Visual Studio 2010 Express. Там он нормально компилируется и всё работает. Собственно, вот код:

#include
#include

using namespace std;

int main()
{
setlocale(LC_ALL, "Russian");
cout << "\n\n\tРусские буквы, а не кракозябры! Ура!";

_getch();
return 0;
}

А вот в Code::Blocks (версия 13.12) с дефолтовым компилятором GNU GCC Compiler выдаёт кракозябры. Попробовал подключить компилятор Microsoft Visual C++ 2010, стал выдавать такую ошибку:
link fatal error lnk1104 не удается открыть файл kernel32.lib

Как это можно исправить?

Bohdan комментирует...

Подскажите, как использовать компилятор от Visual Studio 2013 в Code::Blocks?

Анонимный комментирует...

Дуже добре середовище. Мені особисто в ній і зручно і приємно працювати. Недоліків я не помітив. Що стосується Визуал Студіо, вона зручна, але велика. І складна, до неї точне ще потрібно звикнути ..
У Кодеблок потужна команда підтримки.

Дмитро

Анонимный комментирует...

Здравствуйте, уважаемая Алена. Подскажите, есть ли возможность сделать так, чтобы debag сам открывал окно watch. Маленько надоедает каждый раз открывать watch, растягивать его, чтобы все в нем было видно, и добавлять в него нужные выражения.

Alena комментирует...

Анонимный

Подскажите, есть ли возможность сделать так

Я давно не работаю с Code::Blocks, так что не подскажу