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

Zelf installeren:

Test SFML Installatie

Deze voorbeeldcode toont een venster met een cirkel en een vierkant.

/// @file main.c -- SFML install test
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include <iostream>

int main ()
{
    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 deze bestand ook hier downloaden.

Dit is hoe het dan uitziet:

test_sfml_installatie

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.*

SFML voorbeelden