Имеется код:
#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;
}
При попытке его скомпилировать вылезают ошибки:
/home/kasless/CLionProjects/Test/main.cpp:7: undefined reference to `sf::String::String(char const*, std::locale const&)'
/usr/bin/ld: /home/kasless/CLionProjects/Test/main.cpp:7: undefined reference to `sf::VideoMode::VideoMode(unsigned int, unsigned int, unsigned int)'
/usr/bin/ld: /home/kasless/CLionProjects/Test/main.cpp:7: undefined reference to `sf::RenderWindow::RenderWindow(sf::VideoMode, sf::String const&, unsigned int, sf::ContextSettings const&)'
/usr/bin/ld: /home/kasless/CLionProjects/Test/main.cpp:8: undefined reference to `sf::CircleShape::CircleShape(float, unsigned long)'
/usr/bin/ld: /home/kasless/CLionProjects/Test/main.cpp:9: undefined reference to `sf::Color::Green'
/usr/bin/ld: /home/kasless/CLionProjects/Test/main.cpp:9: undefined reference to `sf::Shape::setFillColor(sf::Color const&)'
/usr/bin/ld: /home/kasless/CLionProjects/Test/main.cpp:11: undefined reference to `sf::Window::isOpen() const'
/usr/bin/ld: /home/kasless/CLionProjects/Test/main.cpp:14: undefined reference to `sf::Window::pollEvent(sf::Event&)'
/usr/bin/ld: /home/kasless/CLionProjects/Test/main.cpp:17: undefined reference to `sf::Window::close()'
/usr/bin/ld: /home/kasless/CLionProjects/Test/main.cpp:20: undefined reference to `sf::Color::Color(unsigned char, unsigned char, unsigned char, unsigned char)'
/usr/bin/ld: /home/kasless/CLionProjects/Test/main.cpp:20: undefined reference to `sf::RenderTarget::clear(sf::Color const&)'
/usr/bin/ld: /home/kasless/CLionProjects/Test/main.cpp:21: undefined reference to `sf::RenderStates::Default'
/usr/bin/ld: /home/kasless/CLionProjects/Test/main.cpp:21: undefined reference to `sf::RenderTarget::draw(sf::Drawable const&, sf::RenderStates const&)'
/usr/bin/ld: /home/kasless/CLionProjects/Test/main.cpp:22: undefined reference to `sf::Window::display()'
/usr/bin/ld: /home/kasless/CLionProjects/Test/main.cpp:7: undefined reference to `sf::RenderWindow::~RenderWindow()'
/usr/bin/ld: /home/kasless/CLionProjects/Test/main.cpp:7: undefined reference to `sf::RenderWindow::~RenderWindow()'
/usr/bin/ld: CMakeFiles/Test.dir/main.cpp.o: in function `sf::CircleShape::~CircleShape()':
/usr/include/SFML/Graphics/CircleShape.hpp:41: undefined reference to `vtable for sf::CircleShape'
/usr/bin/ld: /usr/include/SFML/Graphics/CircleShape.hpp:41: undefined reference to `vtable for sf::CircleShape'
/usr/bin/ld: /usr/include/SFML/Graphics/CircleShape.hpp:41: undefined reference to `sf::Shape::~Shape()'
collect2: error: ld returned 1 exit status
make[3]: *** [CMakeFiles/Test.dir/build.make:84: Test] Error 1
make[2]: *** [CMakeFiles/Makefile2:73: CMakeFiles/Test.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:85: CMakeFiles/Test.dir/rule] Error 2
make: *** [Makefile:118: Test] Error 2
Файл CMakeLists.txt:
cmake_minimum_required(VERSION 3.14)
project(Test)
set(CMAKE_CXX_STANDARD 17)
add_executable(Test main.cpp)
Устанавливал библиотеку SFML из стандартного репозитория на Kubuntu этой командой:
sudo apt-get install libsfml-dev
Поискав в интернете обнаружил, что проблема в линковке, но как слинковать конкретно с SFML, я не понял. На офф. сайте SFML написано что если я установил SFML в стандартную директорию то проблем с линкерами возникнуть не должно. На линуксе недавно. Работаю в Clion. Если понадобится дополнительная инфа - пишите предаставлю всё что от меня нужно.
Для того, чтобы корректно слинковать библиотеки sfml с приложением, необходимо в скрипте CMakeLists.txt указать, с какими библиотеками линкуется приложение с помощью команды target_link_libraries например:
target_link_libraries(Test sfml-graphics sfml-window sfml-system)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Мне нужен класс в котором одно из полей(контейнер) будет подгружаться по мере необходимостиНапример когда происходит вызов begin() данные подгрузятся
С Linux'ом практически никогда не работал, поэтому в этой теме абсолютный ноль, очень надеюсь на вашу помощь