Я довольно новичок в установке, перестановке файлов и написании кода для Linux. Когда мне предложили установить CLion вместе с SFML и CMake, я столкнулся с множеством проблем, выясняя, как заставить их работать. В настоящее время я использую Debian GNU / Linux bullseye / sid (скопировано прямо из того, что я видел), так что если есть что-то конкретное c об этом, было бы тоже неплохо узнать.
В частности, я сталкиваюсь с проблемой, когда решаю запустить свой файл. Я получаю этот набор ошибок.
/usr/bin/ld: attempted static link of dynamic object `/home/user/Development/sfmlbuild/lib/libsfml-audio.so'
collect2: error: ld returned 1 exit status
make[3]: *** [CMakeFiles/sfml_project.dir/build.make:88: sfml_project] Error 1
make[2]: *** [CMakeFiles/Makefile2:76: CMakeFiles/sfml_project.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/sfml_project.dir/rule] Error 2
make: *** [Makefile:118: sfml_project] Error 2
Это то, что у меня есть и в моем CMakeLists.txt, который, как я полагаю, находит большинство файлов SFML, поэтому CLion может их использовать.
cmake_minimum_required(VERSION 3.7)
set(PROJECT_NAME sfml_project)
project(${PROJECT_NAME})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -static")
set(CMAKE_CXX_STANDARD 14)
set(SOURCE_FILES main.cpp)
if (CMAKE_BUILD_TYPE STREQUAL "Release")
add_executable(${PROJECT_NAME} WIN32 ${SOURCE_FILES})
else ()
add_executable(${PROJECT_NAME} ${SOURCE_FILES})
endif ()
set(SFML_ROOT "/home/user/Development/sfmlbuild")
cmake_policy(SET CMP0074 NEW)
set(SFML_STATIC_LIBRARIES FALSE)
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake_modules")
find_package(SFML REQUIRED COMPONENTS audio graphics window system)
if (SFML_FOUND)
include_directories(${SFML_INCLUDE_DIR})
target_link_libraries(${PROJECT_NAME} ${SFML_LIBRARIES} ${SFML_DEPENDENCIES})
endif ()
Я не уверен, что делать дальше, или если что-то не так, в частности, в том, как у меня настроен CLion. Я установил в моем приложении CMake папку, в которой находится мой sfml_project. А мой sfmlbuild, который содержит версию SFML Linux, загруженную из пакета, находится в отдельной папке, в которой находится файл libsfml-audio.so. Что касается сборки, выполнения и разработки программы CLion, у меня есть наборы инструментов для обнаружения компилятора Make, C и компилятора C ++, где я также оставил профиль, который доступен по умолчанию. Возможно, это связано с чем-то неправильным, но я, честно говоря, не уверен, что делать дальше.
Если кто-то может дать мне отзыв, маленький или большой, то я был бы очень признателен и попытался бы вернуться так быстро, как я могу с ответами о том, сделал ли я определенные вещи.
Кроме того, я приношу свои извинения, так как я впервые использую этот веб-сайт, чтобы задавать какие-либо вопросы, поэтому, если этот вопрос плохо сделан Я принимаю свою неопытность и надеюсь, что в следующий раз все будет лучше.
--- Редактировать обновление - Полагаю, я должен был указать, какие именно ошибки были, и я добавлю их здесь также.
Для модели [3]: Ошибка 1
# External object files for target sfml_project
sfml_project_EXTERNAL_OBJECTS =
sfml_project: CMakeFiles/sfml_project.dir/main.cpp.o
sfml_project: CMakeFiles/sfml_project.dir/build.make
sfml_project: /home/user/Development/sfmlbuild/lib/libsfml-audio.so
sfml_project: /home/user/Development/sfmlbuild/lib/libsfml-graphics.so
sfml_project: /home/user/Development/sfmlbuild/lib/libsfml-window.so
sfml_project: /home/user/Development/sfmlbuild/lib/libsfml-system.so
sfml_project: CMakeFiles/sfml_project.dir/link.txt
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/user/CLionProjects/sfml_project/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking CXX executable sfml_project"
//Line #88 is the next one which the error refers to.
$(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/sfml_project.dir/link.txt --verbose=$(VERBOSE)
Для модели [2], Ошибка 2:
# All Build rule for target.
CMakeFiles/sfml_project.dir/all:
$(MAKE) -f CMakeFiles/sfml_project.dir/build.make CMakeFiles/sfml_project.dir/depend
//The next line is line 76 for which error 2 occurs with make[2].
$(MAKE) -f CMakeFiles/sfml_project.dir/build.make CMakeFiles/sfml_project.dir/build
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/user/CLionProjects/sfml_project/CMakeFiles --progress-num=1,2 "Built target sfml_project"
.PHONY : CMakeFiles/sfml_project.dir/all
Для модели [1], Ошибка 2:
# Build rule for subdir invocation for target.
CMakeFiles/sfml_project.dir/rule: cmake_check_build_system
$(CMAKE_COMMAND) -E cmake_progress_start /home/user/CLionProjects/sfml_project/CMakeFiles 2
//The next line is 83 for which make[1] occurs.
$(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/sfml_project.dir/all
$(CMAKE_COMMAND) -E cmake_progress_start /home/user/CLionProjects/sfml_project/CMakeFiles 0
.PHONY : CMakeFiles/sfml_project.dir/rule
Ошибка make выглядит следующим образом, Ошибка 2:
# Build rule for target.
sfml_project: cmake_check_build_system
//The next line is 118 for the make error.
$(MAKE) -f CMakeFiles/Makefile2 sfml_project
.PHONY : sfml_project
Я прошу прощения за размещение всей этой информации так поздно; Я до сих пор не совсем понимаю, но надеюсь, что это даст больше информации для помощи.