не удается подключить библиотеку SFML к CLion
Всем привет. Пытаюсь прогать на маке. В качестве компилятора использую CLion. SFML устанавливала на официальном сайте, там же и взяла тестовый код. Вроде бы всё делаю по инструкциям в интернетах, но ничего не выходит. Ввожу в cmake
cmake_minimum_required(VERSION 3.26)
project(sfml_01)
set(CMAKE_CXX_STANDARD 17)
find_package(SFML 2.6.1 COMPONENTS graphics audio)
add_executable(sfml_01 main.cpp)
target_link_libraries(sfml_01 sfml-graphics sfml-window sfml-audio)
В main тем временем
#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;
}
И вот такую ошибку пишет
CMake Warning at CMakeLists.txt:5 (find_package):
By not providing "FindSFML.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "SFML", but
CMake did not find one.
Could not find a package configuration file provided by "SFML" (requested
version 2.6.1) with any of the following names:
SFMLConfig.cmake
sfml-config.cmake
Add the installation prefix of "SFML" to CMAKE_PREFIX_PATH or set
"SFML_DIR" to a directory containing one of the above files. If "SFML"
provides a separate development package or SDK, be sure it has been
installed.
-- Configuring done (0.0s)
-- Generating done (0.0s)
-- Build files have been written to: /Users/chebooreka/CLionProjects/sfml_01/cmake-build-debug
[1/2] Building CXX object CMakeFiles/sfml_01.dir/main.cpp.o
FAILED: CMakeFiles/sfml_01.dir/main.cpp.o
fatal error: 'SFML/Graphics.hpp' file not found
#include <SFML/Graphics.hpp>
^~~~~~~~~~~~~~~~~~~
1 error generated.
ninja: build stopped: subcommand failed.
Что мне сделать, чтобы оно работало? Была бы рада объяснению на чайничьем языке))
Ответы (1 шт):
Товарищи, спустя 4 дня попыток... ПОЛУЧИЛОСЬ!!!!! короче, 1е, что нужно сделать, это поместить всё в нужные папки, т.е. всё то, что было в скаченной библиотеке нужно сунуть по нужным местам:
- framework: копируете всё из frameworks в library/frameworks
- из lib копируете в /usr/local/lib
- из include в /usr/local/include
- из extlibs /library/frameworks (для тех, кто такой же валенок как я, чтобы найти usr: Macintosh HD -> пользователи -> ваш аккаунт -> нажимаете комманд + шифт + > - и вуаля)) дальше, в cmake.txt пишите:
cmake_minimum_required(VERSION ваша версия)
project(NewSFMLProject LANGUAGES CXX)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(INC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include)
option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
include(FetchContent)
FetchContent_Declare(SFML
GIT_REPOSITORY https://github.com/SFML/SFML.git
GIT_TAG ваша версия sfml)
FetchContent_MakeAvailable(SFML)
add_executable(${PROJECT_NAME} main.cpp)
target_include_directories(${PROJECT_NAME} PUBLIC ${INC_DIR})
target_link_libraries(${PROJECT_NAME} PRIVATE sfml-graphics)
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_17)
install(TARGETS ${PROJECT_NAME})
дальше, в папке проекта удалите "cmake-builde-debug", после этого запускайте программу. Начнется скачивание. Не завершайте процесс, должно пройти время. Если после этого не заработало, то...
ВНИМАНИЕ! хрень знает, к каким последствиям это приведет, чисто в теории это не что-то прям важное, но я чебурек, с опытом в программированием ограниченным подготовкой к егэ и владением компьютером на уровне "умеет создать папку и перезагружать компутер" Если вас это не волнует.....
Вы можете в library удалить Mono.frameworks. Обязательно перед этим скопируйте эту папку куда-нибудь, где вы ее случайно не удалите и не потеряете, ибо если вдруг что-то перестает работать, то нужно будет вернуть ее на место. После этого перезайдите в компилятор и запустите программу. У меня всё работало.
Ура, поздравляю, вы закончили подключать библиотеку и впереди всё самое страшное! Удачи)
Хотелось бы также предупредить владельцев яблок, чтобы вы не тупили так же, как я: если у вас m1/m2, то архитектура у вас на arm. Если скачаете не тот sfml, то работать не буид
(за эти 4 дня я очень много всего попробовала, так что есть маленькая вероятность, что я могла что-то упустить, если не сработает, то напишите туть в ответах, если увижу, то обязательно попытаюсь помочь))