Установка и настройка Code::Blocks
Code::Blocks — свободная интегрированная среда разработки (IDE) с отрытым исходным кодом, которая поддерживает использование различных компиляторов. По умолчанию Code::Blocks использует компилятор MinGW, который поставляется в комплекте (можно скачать дистрибутив и без встроенного компилятора). MinGW – это вариант компилятора GNU C/C++ для Windows. MinGW – это сокращение «Minimalist GNU для Windows». Набор MinGW включает инструменты для программирования с открытым исходным кодом, которые не зависят от каких-либо платных сторонних библиотек. Он используется многими средами разработки (Visual Studio использует собственный компилятор). MinGW включает набор GNU Compiler Collection (GCC), включая компиляторы C, C ++, ADA и Fortran. Code::Blocks имеет открытую архитектуру, что позволяет ему масштабироваться за счёт подключаемых модулей (можно писать программы как под windows, linux, так и под различные микропроцессоры типа avr и stm32). Отладчик кода в Code::Blocks поддерживает точки останова в исходном коде или в данных, которые обрабатывает программа.
Code::Blocks доступен под Windows, Linux и Mac OS X. Сайт проекта — codeblocks.org.
Установка компилятора MinGW
Установка самого Code::Blocks не представляет ничего сложного. Желательно только устанавливать его в папку, в пути к которой нет пробелов или кириллицы. Дистрибутив Code::Blocks версии 17.12 содержал старую версию компилятора MinGW, поэтому приходилось отдельно скачивать Code::Blocks без компилятора MinGW и затем устанавливать компилятор. В настоящий момент версия Code::Blocks 20.03 содержит актуальную версию MinGW (по умолчанию используется 64-разрядная версия компилятора, но можно скачать дистрибутив и с 32-разядной версией). Но на всякий случай рассмотрим отдельно установку MinGW (на примере 32-разрядной версии). Сначала скачиваем дистрибутив Code::Blocks с сайта проекта mingw.org. После запуска появится следующее окно.
Нажмимаем Install и получаем следующее окно.
Здесь в поле Installation Directory указываем расположение файлов компилятора. По умолчанию это C:\MinGW, его и оставляем. Нажимаем Continue и начинается загрузка и установка менеджера для установки MinGW.
Нажимаем Continue и получаем следующее окно.
Для программированя на C++ выбираем для установки пакеты mingw32-base-bin (A Basic MinGW Installation) и mingw32-gcc-g++-bin (The GNU C++ Compiler), а затем жмём в меню Installation -> Apply Changes. Появится окно, в котором будет отображаться загрузка выбранных пакетов.
По завершении загрузки пакетов нажимаем на кнопку Close
При первом запуске Code::Blocks автоматически обнаружит установленный компилятор. При возникновении проблем необходимо перейти в меню Settings -> Compiler. и на вкладке Toolchain executables проверить правильность пути к MinGW, а также имена файлов компилятора и линковщика. Теперь можно создавать проект.
Создание проекта
Для создания проекта необходимо перейти в меню File -> New -> Project. . Либо сразу нажать на кнопку Create a new project на стартовой странице.
В появившемся окне выбираем необходимый тип проекта. Здесь мы видим, что Code::Blocks имеет большое количество шаблонов проектов. В нашем случае это Console application (консольное приложение).
В следующем окне выбираем используемый язык программирования. Выбираем C++ и нажимаем на кнопку Next.
Далее в поле Project Title вписываем название проекта. В нашем случае это Test. Тут же указываем расположение проекта на диске (поле Folder to create project in). В указанной нами папке Code::Blocks автоматически создаст папку с ранее указанным названием проекта. Указав имя папки и имя файла, нажимаем на кнопку Next.
В следующем окне выбираем компилятор, а также сценарии сборки. По умолчанию выбран GNU GCC Compiler, который мы и будем использовать. Сценарии сборки позволяют получить несколько версий одного приложения. По умолчанию предполагается два сценария: Debug (используется при отладке) и Release (сценарий компиляции готового приложения). Хотя бы один из сценариев должен быть выбран. Если выбраны оба сценария, то в дальнейшем можно будет переключаться между ними.
Жмём Finish и получаем минимальную программу, так называемый Hello World!
Нажмимаем F9 для компиляции и запуска программы и получаем следующее окно.
Обратите внимание на кнопки на панели инструментов, предназначенные для запуска и компиляции программы.
Первая слева кнопка (с желтой шестеренкой) запускает только компиляцию программы, вторая (с зеленым треугольником) запускает на исполнение последний скомпилированный файл программы, третья (с зеленым треугольником и желтой шестеренкой) — сначала запускает компиляцию программы, а затем запускает полученный exe-файл программы. Частой ошибкой является использование кнопки запуска (с зеленым треугольником) для компиляции и запуска программы. В этом случае внесенные в исходный код изменения не будут влиять на поведение программы, поскольку программа не была перекомпилирована.
Если открытый для редактирования файл был изменен, то на его вкладке слева от имени появится звездочка как на рисунке ниже. Для сохранения программ, как и во многих других приложениях достаточно нажать сочетание клавиш Ctrl+S. Расположение (путь) и имя отрытого в данный момент файла отображается в строке состояния, в левой нижней части окна.
Если ваши программы имеют небольшой объем и состоят только из одного файла, то лучше создавать не проект, а просто новый файл (File -> New -> Empty file). Связано это с тем, что если у вас несколько проектов, то Code::Blocks будет компилировать и запускать только активный проект. Определить какой проект у вас активен в текущий момент можно по состоянию окна Management, в котором показываются все открытые проекты и файлы. Если одновремено открыто несколько проектов, то название активного будет выделено полужирным шрифтом. Если окно отсутствует, то открыть его можно через меню View -> Manager.
Для переключения между проектами необходимо навести указатель мыши, на тот проект, который вы необходимо сделать активным и затем дважды кликнуть левой кнопкой мыши на названии проекта либо кликнуть один раз правой кнопкой мыши и в появившемся контекстном меню выбрать пункт Activate project. В этом же меню доступны другие действия с проектом (в том числе добавление в проект новых файлов).
Частой ошибкой является редактирование файлов одного проекта, а запуск и тестирование другого проекта. Также если у вас открыт проект и просто отдельный файл программы, то Code::Blocks будет компилировать и запускать только активный проект. Поэтому в учебных целях, когда весь проект зачастую состоит из одного файла желательно создавать не проекты, а отдельные .cpp файлы.
Поддержка кириллицы в консоли
Код стандартного проекта, генерируемого средой Code::Blocks, не поддерживает ввод и вывод кириллических символов в консоли. Для решения данной проблемы необходимо сначала внести небольшие изменения в код проекта. Пример исходного кода показан ниже.
Далее необходимо запустить программу, щёлкнуть левой кнопкой мыши по заголовку окна (где показывается путь к запущенному .exe файлу) и в контекстном меню выбрать пункт Свойства. Затем на вкладке Шрифт установить шрифт Lucida Console и выбрать удобный размер шрифта (там же можно настроить и другие параметры). После этого символы кириллицы будут корректно отображаться в консольных приложениях.
1.2 SFML и Code::Blocks (MinGW)
От переводчика: данная статья является второй в цикле переводов официального руководства по библиотеке SFML. Прошлую статью можно найти тут. Данный цикл статей ставит своей целью предоставить людям, не знающим язык оригинала, возможность ознакомится с этой библиотекой. SFML — это простая и кроссплатформенная мультимедиа библиотека. SFML обеспечивает простой интерфейс для разработки игр и прочих мультимедийных приложений. Оригинальную статью можно найти тут. Начнем.
1. Приступая к работе
- Рисование 2D объектов
- Спрайты и текстуры
- Текст и шрифты
- Формы
- Проектирование ваших собственных объектов с помощью массивов вершин
- Позиция, вращение, масштаб: преобразование объектов
- Добавление специальных эффектов с шейдерами
- Контроль 2D камеры и вида
5. Модуль Audio
- Проигрывание звуков и музыки
- Запись аудио
- Пользовательские потоки аудио
- Спатиализация: звуки в 3D
6. Модуль Network
- Коммуникация с использованием сокетов
- Использование и расширение пакетов
- Веб-запросы с помощью HTTP
- Передача файлов с помощью FTP
Вступление
Эта статья — первая, которую вам следует прочитать, если вы используете среду разработки Code::Blocks с компилятором GCC (это стандартный компилятор для данной среды разработки). В ней будет рассказано, как настроить ваш проект.
Установка SFML
Для начала вы должны скачать SFML SDK со страницы загрузки.
Есть несколько вариантов GCC для Windows, которые несовместимы друг с другом (отличия в обработке исключений, в потоковой модели и т.д.). Убедитесь, что вы выбирите пакет, который соответствует той версии GCC, что вы используете. Если вы не уверены, проверьте, какой из файлов (libgcc_s_sjlj-1.dll или libgcc_s_dw2-1.dll) присутствуют в вашей директории MinGW/bin. Если MinGW установлен вместе с Code::Blocks, у вас наверняка SJLJ версия. Если ваша версия GCC не может работать с предварительно скомпилированной версией библиотеки SFML, вам придется собрать SFML самостоятельно. Это не сложно.
Далее вы должны распаковать архив с SFML в любую удобную для вас директорию. Копировать заголовочные файлы и библиотеки в вашу установку MinGW не рекомендуется. Лучше держать библиотеки в отдельном месте, особенно если вы намереваетесь использовать несколько версий одной библиотеки или несколько компиляторов.
Создание и конфигурирование проекта SFML
Первое, что вам необходимо сделать — это выбрать тип создаваемого проекта. Code::Blocks предлагает широкий выбор типов проектов, включая «SFML project». Не используйте его! Данный тип проекта довольно долго не обновлялся и, скорее всего, несовместим с последними версиями SFML. Вместо этого, создайте пустой проект. Если вы хотите избавиться от консоли, в свойства проекта перейдите в «Build targets» и в комбинированном списке выбирите «GUI application» вместо «Console application».
Теперь вам необходимо указать компилятору, где искать заголовочные файлы (файлы с расширением .hpp) и компоновщику, где искать библиотеки SFML (файлы с расширением .lib).
Добавьте в «Build options», во вкладку «Search directories» следующее:
- Путь до заголовочных файлов SFML ( /include) в Compiler search directories
- Путь до библиотек SFML ( /lib) в Linker search directories
Эти пути совпадают для конфигураций Debug и Release, так что вы можете установить их глобально для вашего проекта.
Следующий шаг — компоновка вашего приложения с библиотеками SFML (файлы с расширением .a). SFML состоит из пяти модулей (system, window, graphics, network и audio) и библиотек для каждого из них. Библиотеки должны быть добавлены в «Link libraries» в список опций сборки вашего проекта, под вкладку «Linker settings». Добавить все библиотеки SFML, которые вам нужны, например «sfml-graphics», «sfml-window» и «sfml-system» (префикс «lib» и расширение «.a» должны быть опущены).
Важно указать библиотеки, соответствующие конфигурации: «sfml-xxx-d» для Debug и «sfml-xxx» для Release, иначе могут возникнуть ошибки.
При компановке библиотек SFML, убедитесь, что вы прокомпоновали библиотеки в правильном порядке, это очень важно для GCC. Правило заключается в том, что библиотеки, которые зависят от других библиотек, должны быть помещены первыми в списке. Любая библиотека SFML зависит от sfml-graphics, sfml-window и sfml-system. Это показано на снимке экрана выше.
Настройки, приведенные выше, позволят вам скомпоновать ваш проект с динамической версией SFML, для которой требуются DLL файлы. Если вы хотите напрямую интегрировать SFML в ваш исполняемый файл, а не использовать компоновку с динамической библиотекой, вы должны скомпоновать статическую версию библиотеки. Статические библиотеки SFML имеют суффикс «-s»: «sfml-xxx-s-d» для конфигурации Debug и «sfml-xxx-s» для Release.
Так же вам необходимо определить макрос SFML_STATIC в опциях препроцессора вашего проекта.
Начиная с SFML 2.2 при статической компоновке вам так же необходимо скомпоновать все зависимости SFML. Это означает, что если, к примеру, вы скомпонуете sfml-window-s или sfml-window-s-d, вам так же придется скомпоновать opengl32, winmm и gdi32. Некоторые из этих библиотек, возможно, уже перечислены в разделе «Inherited values», но добавление их не должно вызвать каких либо проблем.
В таблице ниже представлены зависимости для каждого модуля, добавьте -d если вы хотите скомпоновать Debug библиотеки SFML:
Модуль | Зависимости |
---|---|
sfml-graphics-s |
|
sfml-window-s |
|
sfml-audio-s |
|
sfml-network-s |
|
sfml-system-s |
|
Из таблицы вы могли заметить, что одни модули SFML могут зависить от других, например, sfml-graphics-s зависит от sfml-window-s и sfml-system-s. Если вы производите статическую компоновку библиотеки SFML, будьте уверены, что все зависимости из цепочки зависимостей были удовлетворены. Если одна из зависимостей отсутствует, вы получите ошибку компоновщика.
Если вы немного запутались, не волнуйтесь, для начинающего совершенно нормально быть перегруженным всей этой информацией о статическом связывании.Если у вас что-то не получится с первого раза, вы можете попробовать еще раз имея в виду все сказанное выше. Если у вас все же возникнут трудности со статическим связыванием, вы можете попробовать поискать решение в разделе FAQ или на форуме.
Если вы не знаете чем отличаются динамические (так же называемые общими) и статические библиотеки и какой тип библиотек использовать, вы можете найти больше информации в интернете. На данную тему есть множество хороших статей/блогов/постов.
Ваш проект готов, давайте напишем немного кода что бы проверить, что все работает правильно. Поместите следующий код в файл main.cpp:
Теперь скомпилируйте проект, и, если вы скомпоновали вашу программу с динамической версией SFML, не забудьте скопировать файлы с расширением .DLL (они расположены в /bin) в директорию, в которой расположен исполняемый файл вашей программы. Запустите программу, и, если все было сделано правильно, вы должны увидеть это:
Если вы используете модуль sfml-audio (независимо от того, статическую или динамическую его версию), вы так же должны скопировать внешнюю dll библиотеку OpenAL32.dll. Этот файл так же может быть найден в директории /bin.