Skip to content

Компиляция SFML, используя g++

В этой статье будет кратко описано, как можно скомпилировать любой проект с использованием библиотеки SFML при помощи компилятора g++.

Скачивание библиотеки

Здесь у нас есть два пути:

  • Скачивание библиотеки с помощью менеджера пакетов
  • Скачивание библиотеки с официального сайта

Рассмотрим оба.

Скачивание с помощью менеджера пакетов


apt

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

Чтобы найти пакет, нам нужно написать

shell
apt-cache search sfml

Эта команда выведет нам пакеты, в названии которых присутствует sfml. Конкретно нам нужен dev-пакет нашей любимой библиотеки.

Устанавливаем нужный нам пакет:

shell
sudo apt-get install "название найденого пакета"

где "название найденого пакета" вам нужно заменить на ваш пакет.

dnf

SFML устанавливается с помощью dnf так:

shell
sudo dnf install SFML

yum

SFML устанавливается с помощью yum так:

shell
sudo yum install SFML

Скачивание с официального сайта

Переходим на официальный сайт SFML в раздел download и качаем последнюю версию для вашей ОС под g++, распаковываем архив и кидаем в ваш проект, например создайте директорию dependencies, где вы будете хранить все либы.

Тестовый код

Вот тестовый код, которым вы можете проверить, правильно ли вы всё скомпилировали.

C++
#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode(400, 400), "SFML works!");
    sf::CircleShape shape(100.f);
    shape.setPosition(100,100);
    shape.setFillColor(sf::Color(200,30,10));
    
    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }

        window.clear(sf::Color(20,5,5));
        window.draw(shape);
        window.display();
    }

    return 0;
}

Подключение заголовочных файлов

Подключение заголовочных файлов для g++ осуществляется при помощи команды:

shell
g++ -c "Filename.cpp" -I"Path_To_Include"

где "Filename.cpp" это наш компилируемый файл, а "Path_To_Include" сам путь где лежит директория include из нашей любимой SFML.

Вот пример с использованием стандартной директории, куда устанавливаются заголовки при установки SFML в ALT Linux и файла main.cpp

shell
g++ -c main.cpp -I/usr/include/

Линковка библиотек

Чтобы слинковать библиотеки вам будет достаточно этой команды:

shell
g++ main.o -o sfml-app -L"sfml_install_path"/lib "libs_names"

Достаточно просто заменить "sfml-install-path" на путь к библиотекам SFML и заменить "libs_names" на библиотеки тех модулей которые вам нужны, с префиксом -, для линукса это -l.

Если вы качали SFML в директорию по-умолчанию, то вам достаточно просто указть название библиотек нужных вам модулей, вот пример:

shell
g++ main.o -o sfml-app -lsfml-graphics -lsfml-window -lsfml-system

Если вы качали в другую директорию, то нужно создать переменную окружения LD_LIBRARY_PATH с путём до библиотек:

shell
export LD_LIBRARY_PATH="sfml_install_path"/lib

где "sfml-install-path" это путь к библиотекам SFML.

Запускаеи программу:

shell
./sfml-app

В конце концов, после всех этих действий мы сможем получить наше прекрасное окно: Скриншот результата с окном

Пошаговая инструкция установки SFML на примере ALT Linux

  • Качаем SFML при помощи:
shell
sudo apt-get install libSFML-devel
  • Создаём файл main.cpp, в который вставляем тестовый код.

  • Подключаем заголовки

shell
g++ -c main.cpp -I/usr/include/
  • Подключаем библиотеки
shell
g++ main.o -o sfml-app -lsfml-graphics -lsfml-window -lsfml-system
  • Запускаем
shell
./sfml-app

Содержание доступно по лицензии MIT