Ваш файл CMakeLists.txt содержит несколько ошибок, которые могут вызывать проблемы при сборке. Вот исправленный и улучшенный пример CMakeLists.txt, который должен работать корректно:
Исправленный код CMakeLists.txt
cmake
Копировать код
cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
# Название проекта
set(PROJECT_NAME test)
project(${PROJECT_NAME})
# Установим стандарт C++
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Найти SFML
find_package(SFML REQUIRED COMPONENTS graphics window system audio network)
if(NOT SFML_FOUND)
message(FATAL_ERROR "SFML не найден. Убедитесь, что он установлен и доступен.")
endif()
# Найти ImGui
find_package(imgui CONFIG REQUIRED)
if(NOT imgui_FOUND)
message(FATAL_ERROR "ImGui не найден. Убедитесь, что он установлен и доступен.")
endif()
# Указываем исходные файлы
set(SOURCES
src/main.cpp
src/Engine.cpp
src/Timer.cpp
src/Cube.cpp
src/MyContactListener.cpp
src/GUI.cpp
src/FlagManager.cpp
)
set(HEADERS
src/Engine.h
src/Timer.h
src/Cube.h
src/MyContactListener.h
src/InclusionHeaders.h
src/GUI.h
src/FlagManager.h
)
# Создаем исполняемый файл
add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS})
# Линкуем библиотеки
target_link_libraries(${PROJECT_NAME}
PRIVATE
sfml-graphics
sfml-window
sfml-system
sfml-audio
sfml-network
imgui::imgui
)
# Включаем пути к заголовочным файлам
target_include_directories(${PROJECT_NAME} PRIVATE src)
Основные исправления:
Версия CMake:
Указана версия 3.10, так как версия 2.8 устарела и не поддерживает современные возможности (например, стандарт C++17).
Проверка зависимостей:
Добавлены проверки на наличие SFML и ImGui. Если они не найдены, CMake выдаст понятное сообщение об ошибке.
Удалены лишние скобки:
Лишняя закрывающая скобка ) в конце файла удалена.
Структура проекта:
Список исходных и заголовочных файлов разделен на две переменные SOURCES и HEADERS для лучшей читаемости.
Пути к заголовочным файлам:
Добавлена команда target_include_directories для указания CMake, где искать заголовочные файлы.
Совместимость с C++17:
Использована команда set(CMAKE_CXX_STANDARD_REQUIRED ON) для обязательного использования стандарта C++17.
Рекомендации:
Убедитесь, что SFML и ImGui установлены и доступны CMake. Для Windows можно использовать vcpkg или CMake presets для упрощения настройки окружения.
Проверьте пути к исходным файлам и их правильность. Убедитесь, что все файлы действительно существуют.
Попробуйте использовать этот исправленный файл CMakeLists.txt. Если проблема сохранится, уточните текст ошибки, чтобы можно было помочь с её устранением.