Codeblocks + SFML
Codeblocks + SFML

Codeblocks + SFML

4 августа 2022       317 просмотров

Не хочу долго рассусоливать, так что приступим.

Для того, чтобы достигнуть поставленной цели, нам понадобится: собственно Codeblocks, собственно SFML, собственно компьютер, руки, голова (немножко).

Как скачивать и устанавливать это добро, я пожалуй промолчу, чтобы сойти за умного.

да, sfml'ка просто распаковывается

Скажу только, что после распаковки, графическую библиотеку желательно внести в «переменные среды», например так. Ну, либо добавлять вручную либы в каталог с проектом, тут кому как удобнее.

В любом случае, при скачивании обратите внимание на то — какая у вас версия MinGW, и скачивайте подходящий архив. В худшем случае — качаем сорцы и компилим их своей версией MinGW, чтобы наши волосы были мягкими и шелковистыми не было несовместимости.

Итак, к сути, запускаем рыбок в аквариум Codeblocks и создаем пустой как кошелёк бюджетника проект:

раз

два

три

Потом идём за пивом в свойства проекта и меняем Console на GUI application на вкладке «Build targets».

раз

два

Надеюсь то, что такая манипуляция предусматривается и для сборки «Release» — говорить вслух не надо?

Далее — нам нужны раки опции сборки. На вкладке «Ыуфкср вшкусещкшуы» «Search directories» прописываем пути до sfml:
В «Compiler» — header файлы, а в «Linker» — lib'ы:

раз

два

три

После чего прилинковываем нужные библиотеки в «Linker settings»:

допустим так

Да, можно было бы ещё докинуть сюда либу network или audio, но для примера она нам не нужна.

Вообще, если вы желаете статическую линковку, а не динамическую, то можно использовать немножко другие библиотеки, формат записи тогда изменится на «sfml-что-то там-s-d» для дебажной сборки и «sfml-что-то там-s» для релизной, ну и в настройках компилятора нужно будет указать, что это у нас SFML_STATIC (на вкладке» #defines»):

примерно так

Для примера набросаем что-нибудь простое и эффектное, например красную кнопку для запуска циклонных торпед:

#include <SFML/Graphics.hpp>//используем sfml

int main  ()//погнали
{
 sf::RenderWindow window  (sf::VideoMode  (300, 300),  «it's alive!»);//вызываем тракториста, рисуем окно
 sf::CircleShape shape  (150);//а в нём — кружок
 shape.setFillColor  (sf::Color::Red);//красный
 while  (window.isOpen  ())//пока окно открыто
 {
 sf::Event event;//у нас есть событие
 while  (window.pollEvent  (event))
 {
 if  (event.type == sf::Event::Closed)//при закрытии
 window.close  ();//окно, собственно, закрываем
 }
 window.clear  ();//на всякий случай чистим
 window.draw  (shape);//рисуем то, что задали выше
 window.display  ();//и показываем
 }
 return 0;//на сегодня — всё }

Собираем и запускаем всё на самотёк:

оно работает

В рамках этой статьи я не буду подробно рассказывать как душить пингвина о sfml, документация, если что, есть на сайте разработчиков.