TI-S2

SFML installatie

Inhoud

Vooraf

We gaan er van uit dat je een geinstalleerde MinGW-w64 toolchain hebt. Installeer onder de MSYS2 UCRT64 terminal!

VScode + MinGW en GCC

Installatie SFML

Installeer SFML met de packetmanager (dankzij Lia E.):

pacman -Syu
pacman -S mingw-w64-ucrt-x86_64-sfml

Voorbeeld tasks.json

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: SFML g++.exe build AND RUN active file",
            "command": "C:\\msys64\\ucrt64\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${fileDirname}\\*.cpp",
                "-lsfml-graphics",
                "-lsfml-window",
                "-lsfml-system",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",
                "&&",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "C:\\msys64\\ucrt64\\bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger."
        }
    ],
    "version": "2.0.0"
}

Voorbeeld tasks.json file voor VScode, bij gebruik van SFML. Let op de -l flags (-lsfml-system en -lsfml-window). De *.cpp wildcard lijkt niet altijd te werken voeg in dat geval de bestandsnamen toe bijvoorbeeld main.cpp

Uitleg van Tobias

Toelichting door Tobias:

Als het goed is kun je met bovenstaande tasks.json simpelweg de build task runnen via
Terminal -> Run Build Task of de shortcut Ctrl+Shift+B gebruiken.

De task compilet de binary, en runt die gelijk daarna, het is niet nodig om die zelf nog te runnen.*

Zelf installeren:

Test SFML Installatie

Deze voorbeeldcode toont een venster met een cirkel en een vierkant. De code wordt momenteel uitgebreid voor meerdere SFML versies.

/// @file test_sfml_installatie.cpp -- SFML install test
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include <SFML/Config.hpp> // for SFML version
#include <iostream>

// print SFML version
void print_SFML_version()
{
    std::cout
        << "Current SFML version: " << std::endl
        << SFML_VERSION_MAJOR << "."
        << SFML_VERSION_MINOR << "."
        << SFML_VERSION_PATCH << std::endl;
}

// currently only checking on major version number
bool issupported_SFML_version()
{
    std::cout << "This program only supports SFML 2.x.x. Your version is:" << std::endl;
    print_SFML_version();
    return (SFML_VERSION_MAJOR == 2);
}

int main()
{
    if (!issupported_SFML_version())
        return -1;
    // else
    sf::RenderWindow window(sf::VideoMode(800, 600), "SFMLtest", sf::Style::Default, sf::ContextSettings(0, 0, 2));
    sf::RectangleShape square(sf::Vector2f(200.0, 200.0));
    sf::CircleShape circle(100.0);
    square.setPosition(sf::Vector2f(150.0, 200.0));
    circle.setPosition(sf::Vector2f(450.0, 200.0));
    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }
        window.clear();
        window.draw(square);
        window.draw(circle);
        window.display();
        sf::sleep(sf::milliseconds(20));
    }
    return 0;
}

main.cpp

Je kan dit bestand ook hier downloaden.

Dit is hoe het er dan uitziet:

test_sfml_installatie

SFML voorbeelden