Возникли проблемы с получением SFML для работы с C ++ в Geany на MacOS - PullRequest
0 голосов
/ 03 ноября 2019

Я хочу заняться разработкой игр на C ++, поэтому я решил попробовать SFML. Тем не менее, даже после размещения всех файлов в нужных местах, он не найдет нужных файлов.

Я выполнил все шаги на странице https://www.sfml -dev.org / tutorials / 2.5/start-osx.php, убедившись, что все фреймворки и dlib-файлы помещены в нужные папки, но это все равно не позволит мне использовать файлы SFML

#include <iostream>
#include <SFML/Graphics.hpp>

int main() {
    sf::RenderWindow window(sf::VideoMode(800, 600), "My window");
    while (window.isOpen()) {
        sf::Event event;
        while (window.pollEvent(event)) {
            if (event.type == sf::Event::Closed) {
                window.close();
            }
        }
        window.clear(sf::Color::Black);
        window.display();
    }
    return 0;
}

Что должна делать программасделать, это отобразить черное окно, которое может закрыться, но это выдает мне сообщение об ошибке

g++ -Wall -o "helloWorld" "helloWorld.cpp" (in directory /Users/Splavacado100/Desktop/Coding/C++)
helloWorld.cpp:2:10 fatal error: 'SFML/Graphics.hpp' file not found
#include <SFML/Graphics.hpp>

1 Ответ

0 голосов
/ 03 ноября 2019

SFML (и, насколько мне известно, любая дополнительная библиотека за пределами стандартной библиотеки шаблонов) требует, чтобы компилятор знал, где хранятся папки lib и include. В этом примере ошибки похоже, что используемая вами IDE не находит правильный путь к папкам. Он не указан в версии MacOS, потому что учебник, который вам понравился, предполагает, что вы используете XCode, который похож на Visual Studio для Mac.

Из того, что я могу извлечь, если вы пишете свою программу в текстовом редакторе и компилируете с использованием make-файлов или приглашений командной строки, посмотрите статью SFML и Linux для более полной информации. Идея о том, как его использовать. Относящиеся к этому сценарию:

Если вы установили SFML по нестандартному пути, вам нужно указать компилятору, где искать заголовки SFML (файлы .hpp):

g++ -c main.cpp -I<sfml-install-path>/include Here - это каталог, в который вы скопировали SFML, например /home/me/sfml.

Затем необходимо связать скомпилированный файл с библиотеками SFML, чтобы получить конечный исполняемый файл. SFML состоит из 5 модулей (система, окно, графика, сеть и аудио), и для каждого из них есть одна библиотека. Чтобы связать библиотеку SFML, необходимо добавить «-lsfml-xxx» в командную строку, например «-lsfml-graphics» для графического модуля (префикс «lib» и расширение «.so» имени файла библиотекидолжен быть пропущен).

g++ main.o -o sfml-app -lsfml-graphics -lsfml-window -lsfml-system Если вы установили SFML по нестандартному пути, вам нужно указать компоновщику, где искать библиотеки SFML (.so файлы):

g++ main.o -o sfml-app -L<sfml-install-path>/lib -lsfml-graphics -\lsfml-window -lsfml-system Теперь мы готовы выполнить скомпилированную программу:

...