вторник, 23 июня 2009 г.

Установка Code::Blocks (Nightly builds) в Windows

Несмотря на наличие на официальном сайте среды Code::Blocks полноценных инсталляторов для множества платформ, разработчики не радуют пользователей регулярностью их обновлений. Интервал между двумя официальными релизами (версией 8.02 и предыдущей) был более 2-х лет. :) Однако, все это время среда разработки продолжала развиваться и обрастать новыми возможностями.

UPD 9.01.2010: Вставил скриншоты которые валялись на компе уже очень давно :).

Очевидно, у команды разработчиков Code::Blocks, просто, нет возможности часто подготавливать полноценные релизы.. Это не удивительно, если учесть то, что разработка ведется энтузиастами в свободное от основной работы (т.е. зарабатывания денег) время.
К сожалению, развитие программы плохо заметно если пробегать официальный сайт http://www.codeblocks.org бегло, т.е. ограничиться посещением страницы с описанием и сразу перейти на страницу загрузки с версией не первой свежести.. Вполне возможно, именно первое знакомство со старыми версиями и отпугивает многих потенциальных пользователей, от того чтобы начать использовать эту среду. Но разработка не стоит на месте и прогресс можно наблюдать, просматривая списки изменений, на форуме http://forums.codeblocks.org/ в разделе Nightly builds, где регулярно выкладываются свежие билды Code::Blocks под Windows на основе последних версий исходников из репозитория. Существует так же неофициальный debian-репозиторий c ночными сборками http://apt.jenslody.de, который можно использовать для установки последних версий в Debian и Ubuntu. Кроме того для самых отчаянных и нетерпеливых всегда существует возможность самостоятельно собрать Code::Blocks из исходников. Для получения последних версий исходников всегда можно обратиться к svn-репозиторию проекта: http://svn.berlios.de/svnroot/repos/codeblocks/trunk
Итак, если Вас не устраивает версия Code::Blocks представленная в секции загрузки на официальном сайте, то рекомендую попробовать последнюю ночную сборку, предварительно установив MinGW. Где искать MinGW, я уже писал ранее.
Смело идем на форум http://forums.codeblocks.org/ в раздел Nightly builds и заходим в последний созданный топик сообщающий о выходе билда.
Например: «The 01 June 2009 build (5616) is out». Из названия следует что успешно вышел билд за 1 июня на основе ревизии 5616 из официального svn-репозитория проекта.
В первом посте топика видим несколько ссылок: ссылка на rss с новостями, инструкцию по работе с ночными сборками и 3 ссылки на файлы архивов в формате 7z. Если Вы впервые качаете ночную сборку, то нужно обязательно загрузить все три файла.
В моем случае это:
wxmsw28u_gcc_cb_wx2810.7z - библиотека wxWidgets специальная сборка для Code::Blocks. Меняется редко если для предыдущей ночной сборки вы уже скачали этот файл, то второй раз качать его не нужно. :)
mingwm10_gcc421.7z - какая то служебная библиотека из состава MinGW, нужна для dll c wxWidgets. :) Меняется еще реже.
CB_20090601_rev5616_win32.7z - свежий билд Code::Blocks. Меняется каждую ночную сборку.. ;)

Создадим папку в которой будет жить среда Code::Blocks и распакуем в нее содержимое всех трех архивов. По старой привычке у меня эта папка имеет незамысловатый путь «c:\codeblocks». ;) Установите MinGW если вы этого еще не сделали.

Запустите codeblocks.exe. При первом запуске среда отобразить диалог со списком обнаруженных в системе компиляторов.



В моем случае Code::Blocks нашел установленный MinGW как GNU GCC Compiller и компилятор из состава Microsoft Visual Studio 2008 Express.
Я выбираю «GNU GCC Compiller», нажимаю «Set as default» и «OK», в дальнейшем MinGW будет использоваться по умолчанию.
Компилятор выбран и программа радостно откроет главное окно и диалог «Tip of the day». Закройте окно с советами (можете снять галочку, чтобы оно не выскакивало при старте программы), к нему всегда можно вернуться через главное меню в разделе «Help». Далее программа спросит хотите ли Вы ассоциировать Code::Blocks с файлами C/C++ (*.c, *.cpp, *.h), файлами проектов Code::Blocks (*.cbp, *.workspace) или даже c файлами проектов других сред разработки DevCPP и Visual Studio.



Я выбираю ассоциации с файлами C/C++ и файлами проектов Code::Blocks, это третья строчка. Нажимаем «OK» и среда уже практически готова к работе, осталось немного подстроить интерфейс под себя и проверить на тестовом проекте.



Закрываем окошко «Scripting console» и размещаем панели инструментов более компактно. Часть панели можно выборочно скрыть через меню «View->Tollbars»
Я размещаю панели в 3 строчки:
1 Строчка - панели Main (значки сохранения, открытия файлов и т.д.), IncrementalSearch и ThreadSearch.
2 строчка - панель CodeCompletion.
3 строчка - панели Compiller и Debugger.



Для проверки попробуем скомпилировать HelloWorld . :) Для этого создадим новый проект «File->New->Project». Откроется окно с выбором шаблонов проектов. Выберите «Console application» - откроется мастер создания проекта.





Первая страница мастера не представляет интереса. На второй нужно указать язык проекта C или C++. На третьей нужно указать название проекта и папку где он будет создан. На четвертой(последней) странице производится выбор компилятора для проекта и настройка папок куда будут складываться результирующие исполняемые и объектные файлы. Жмем Finish - проект создан. В окошке Managment появился новый проект, пока состоящий из одного файла main.cpp (или main.c).

Соберем проект, меню «Build->Build and run» или просто F9 (для компиляции, линковки и запуска проекта).

Если сборка пройдет неудачно или Code::Blocks не найдет MinGW, то в нижней части программы на владке Build log появится сообщение подсвеченное красным.
Например, если не найден MinGW:
-------------- Build: Release in test ---------------
Compiling: main.cpp
Execution of 'mingw32-g++.exe -Wall -fexceptions -O2 -c D:\dev\sandbox\test\main.cpp -o obj\Release\main.o' in 'D:\dev\sandbox\test' failed.
Nothing to be done.



Убедитесь что MinGW установлен. Если он установлен в папку отличную от «c:\mingw» и не определяются Code:Blocks автоматически, то зайдите в настройки компилятора «Settings->Compiler and Debugger..->Global compiler settings». В выпадающем списке «Select compiler» выберите «GNU GCC Compiler», перейдите на вкладку «Toolchain executables» и в поле «Compiler installation directory» укажите путь к MinGW.

Если сборка пройдет успешно Вы увидите перед собой окошко консоли с примерно таким текстом:
Hello world!
Process returned 0 (0x0) execution time : 0.093 s
Press any key to continue.





Это окошко принадлежит пускалке для консольных приложений «cb_console_runner.exe», которая замеряет время выполнения Вашей программы и, ожидая ввода с клавиатуры, не дает пропасть в небытие данным выведеным на консоль, избавляя от извращений типа «getchar()» в конце программы. :)

Ну вот и все, Code::Blocks - готов к работе. :)

На последок, порекомендую так же в настройках компилятора «Settings->Compiler and Debugger..->Global compiler settings» изменить формат лога компиляции и указать максимально количество процессов для параллельной компиляции файлов проекта (дает существенное ускорение компиляции больших проектов на многоядерных процессорах).
Для этого перейдем на вкладку «Other settings». Поставим галочку «Display build progress percentage in log» (это будет отображать в логе компиляции прогресс сборки проекта в процентах). Иногда может быть полезным посмотреть полную информацию о параметрах вызова компилятора, для этого может пригодится установить параметр «Compiler logging» в значение «Full command line» . Изменим число в поле с названием «Number processes for prallel builds» на число равное числу ядер в вашей системе. В принципе это число может быть и больше. Например у меня сборка одного проекта на двухядерной системе в 4 процесса происходила слегка быстрее чем в 2 процесса. Но не увлекайтесь, если поставить совсем неадекватное число то, получите обратный эффект - уменьшение скорости.

На сегодня все. Удачной компиляции! :)

10 комментариев:

  1. Отлично описана процедура установки и настройки. Может автору стоит принять участие в развитие проекта Code::Blocks?? Хотелось бы также прочитать статью про llvm. Говрят интересная технология =)

    ОтветитьУдалить
  2. Постараюсь внести свою долю в развитие популяризацией "Code::Blocks". :)
    Сейчас планирую чуток по позже написать пост про "азбуку" работы с проектами разных типов в "Code::Blocks", и несколько постов по полезным мелочам.
    Если доберутся руки до LLVM, то и про него можно написать. :) Но пока больше интересен Jython 2.5, а времени нету..

    ОтветитьУдалить
  3. Большое спасибо, все очень доходчиво.

    ОтветитьУдалить
  4. Здравствуйте! Очень хорошо написано! А где же продолжение? Мне интересн вопрос об установки wxWidgets! Никак не могу разобраться! Может, кто-нибудь подскажет?

    ОтветитьУдалить
  5. Рад, что кому-то кроме меня эта информация пригодилась. :)
    К сожалению до продолжения руки не дошли.. Возможно напишу продолжение после выхода wxWidgets 3.0.
    На данный момент эта тема не так интересна :(, т.к. сейчас я занимаюсь разработкой в основном на ActionScript 3.0 и Python.

    ОтветитьУдалить
  6. Нехватает следующей информации:
    1) как сделать Portable-версию, на форуме проекта CB информация есть!!!
    2) Также нехватает информации, как привязать другой комплитор ? к примеру lcc ?

    ОтветитьУдалить
  7. Хм.. Честно говоря не ставил перед собой задачу написать руководство по Code::Blocks на все случаи жизни. Скорее небольшую памятку для быстрого старта. :)
    Судя по всему в этой теме Вы уже разобрались.. Так может черканете небольшую заметку об интересующем аспекте работы с Code::Blocks? А я с радостью размещу на нее ссылку в этом посте. ;)

    ОтветитьУдалить
  8. у меня пишет
    "1 - Debug" uses an invalid compiler. Probably the toolchain path within the compiler options is not setup correctly?! Skipping...

    чего делать ?

    ОтветитьУдалить
  9. Спасибо большое!!!!!))))))))))))весь день убивалась)))))если б не ваши заметки совсем бы погибла за компом!! CodeBlocks устанавливала)раза 4 удаляла)) потом с компиляцией мучилась, ....с компиляторами рррр)...одним словом спасибо!

    ОтветитьУдалить
  10. Checking for existence: C:\CodeBlocks\myWork\mywSdL\bin\Release\mywSdL.exe
    Executing: "C:\CodeBlocks\myWork\mywSdL\bin\Release\mywSdL.exe" (in C:\CodeBlocks\myWork\mywSdL\.)
    Process terminated with status -11 (0 minutes, 0 seconds)
    не подскажите в чем проблема?

    ОтветитьУдалить