Hogyan kell futtatni SFML a Clion, Error undefined reference to?

szavazat
5

Új vagyok a C ++, és próbálja megtanulni játékprogramozásból, úgy döntök SFML és futtatható Clion által Jetbrain és használata Ubuntu gép. Azt követően ez a bemutató SFML és Linux van a kód:

#include <SFML/Graphics.hpp>

using namespace sf;

int main() {

RenderWindow window(sf::VideoMode(200, 200), SFML Work!);
CircleShape shape(100.f);
shape.setFillColor(Color::Green);

while (window.isOpen()) {
    Event event;
    while (window.pollEvent(event)) {
        if (event.type == Event::Closed) {
            window.close();
        }
    }

    window.clear();
    window.draw(shape);
    window.display();
}

return 0;
}

Amikor fut Clion ez hiba

CMakeFiles/SFMLBasic.dir/main.cpp.o: In function `main': 
undefined reference to `sf::String::String(char const*, std::locale const&)'
undefined reference to `sf::VideoMode::VideoMode(unsigned int, unsigned int, unsigned int)'
undefined reference to `sf::RenderWindow::RenderWindow(sf::VideoMode, sf::String const&, unsigned int, sf::ContextSettings const&)'
...
undefined reference to `sf::Shape::~Shape()'

Hogyan config vagy beállítás futtatásához SFML a Clion, nem tudom CGyõzõdjön lehet csinálni? Csak működteti terminál működik, ha a parancsot.

g++ -c main.cpp
g++ main.o -o sfml-app -lsfml-graphics -lsfml-window -lsfml-system
./sfml-app

Hogyan config legyen használni az összes referencia változó nélkül nem kézi minden alkalommal a terminál? Kösz.

A kérdést 28/10/2014 06:56
a forrás felhasználó
Más nyelveken...                            


5 válasz

szavazat
2

Meg kell kapcsolnia SFML könyvtárat az CMakeLists.txt.

Vessünk egy pillantást CGyõzõdjön target_link_libraries .

És ezt a linket hasznos lehet az Ön számára, hogy tudja, hogyan kell megtalálni SFML könyvtár útvonal CGyõzõdjön.

Itt van egy FindSFML.cmake modul: https://github.com/LaurentGomila/SFML/blob/master/cmake/Modules/FindSFML.cmake

Válaszolt 28/10/2014 07:38
a forrás felhasználó

szavazat
6

Miután olvasni @Stackia javaslatot. Ez az én megoldásom utal ez a bemutató bemutató: Építsd meg SFML projekt CGyõzõdjön

  1. Hozzon létre egy cmake_modulesmappát, és töltse le ezt a fájlt FindSFML.cmake és másolja benne.

  2. Szerkesztése CMakeLists.txtáltal add, hogy ez a végén fájlt, kattintson újratöltése változásokat.


# Define sources and executable set(EXECUTABLE_NAME "MySFML") add_executable(${EXECUTABLE_NAME} main.cpp)

# Detect and add SFML
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules" ${CMAKE_MODULE_PATH})
find_package(SFML 2 REQUIRED system window graphics network audio)
if(SFML_FOUND)
    include_directories(${SFML_INCLUDE_DIR})
    target_link_libraries(${EXECUTABLE_NAME} ${SFML_LIBRARIES})
endif()

  1. Most kiválaszthatja fájl nevét MySFML, majd kattintson a Run (Shift + F10). Működik! írja kép leírása itt
Válaszolt 29/10/2014 04:33
a forrás felhasználó

szavazat
3

Kijavítottam azt következő lépéseket:

  1. Letöltés http://www.sfml-dev.org/download/sfml/2.3.2/64-Linux

    És bontsa ki a mappát én projekt:

    /home/user/ClionProjects/CPP_first/
    
  2. Nevezett projekt „CPP_first”

  3. main.cpp tartalmazza a következő

    #include <SFML/Graphics.hpp>
    
    int main()
    {
        sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
        sf::CircleShape shape(100.f);
        shape.setFillColor(sf::Color::Green);
    
        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;
    }
    
  4. CMakeLists.txt tartalmazzák a következő:

    set(EXECUTABLE_NAME "CPP_first")
    add_executable(${EXECUTABLE_NAME} main.cpp)
    
    
    # Detect and add SFML
    set(SFML_DIR "/home/user/ClionProjects/CPP_first/SFML-2.3.2/share/SFML/cmake/Modules")
    set(CMAKE_MODULE_PATH "/home/user/ClionProjects/CPP_first/SFML-2.3.2/share/SFML/cmake/Modules" ${CMAKE_MODULE_PATH})
    find_package(SFML REQUIRED system window graphics network audio)
    if(SFML_FOUND)
        include_directories(${SFML_INCLUDE_DIR})
        target_link_libraries(${EXECUTABLE_NAME} ${SFML_LIBRARIES})
    endif()
    
  5. Path to my projekt /home/user/ClionProjects/CPP_first/

PS: Én nem találtam, hogyan lehet megtalálni SFML ha telepítve van:

sudo apt-get install libsfml-dev

Remélem ez segít valaki

Válaszolt 09/12/2015 15:51
a forrás felhasználó

szavazat
0

Ha telepíti SFML szerint:

sudo apt-get install libsfml-dev

megtalálja az utat az / usr / share / SFML /

Válaszolt 01/05/2018 21:52
a forrás felhasználó

szavazat
0

Ez sokkal egyszerűbb őt (lásd ezt a SFML fórumvita ). Ez az, amit tettem, hogy az én SFML futó projekt Clion:

  1. Hozzáadott C:\SFML\binén env változóPath
  2. Módosított CMakeLists.txtén Clion projekt:

    cmake_minimum_required(VERSION 3.13)
    project(Hello_SFML)
    
    set(CMAKE_CXX_STANDARD 14)
    
    find_package(SFML 2.5 COMPONENTS graphics audio REQUIRED)
    add_executable(Hello_SFML main.cpp)
    target_link_libraries(Hello_SFML sfml-graphics sfml-audio)
    
Válaszolt 26/01/2019 23:33
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more