diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..54c7f64 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,90 @@ +cmake_minimum_required(VERSION 3.20) +project(PathfindingDemo) + +set(CMAKE_CXX_STANDARD 23) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +# Find required packages +find_package(PkgConfig REQUIRED) +pkg_check_modules(SDL3 REQUIRED sdl3) +pkg_check_modules(SDL3_image REQUIRED sdl3-image) +find_package(OpenGL REQUIRED) +find_package(GLEW REQUIRED) + +# Add Google Test +find_package(GTest REQUIRED) + +# Include directories +include_directories(cpp/src) + +# Source files for the main executable +set(MAIN_SOURCES + cpp/src/main.cpp + cpp/src/camera.cpp + cpp/src/entities.cpp + cpp/src/gameloop.cpp + cpp/src/map.cpp + cpp/src/pathfinder/base.cpp + cpp/src/pathfinder/bfs.cpp + cpp/src/pathfinder/dijkstra.cpp + cpp/src/pathfinder/gbfs.cpp + cpp/src/pathfinder/utils.cpp + cpp/src/pathfindingdemo.cpp + cpp/src/sprite.cpp + cpp/src/tile.cpp + cpp/src/user_input.cpp + cpp/src/window.cpp +) + +# Header files (for IDE support) +set(HEADERS + cpp/src/array.hpp + cpp/src/camera.hpp + cpp/src/entities.hpp + cpp/src/gameloop.hpp + cpp/src/log.hpp + cpp/src/map.hpp + cpp/src/math.hpp + cpp/src/pathfinder/base.hpp + cpp/src/pathfinder/bfs.hpp + cpp/src/pathfinder/dijkstra.hpp + cpp/src/pathfinder/gbfs.hpp + cpp/src/pathfinder/utils.hpp + cpp/src/pathfindingdemo.hpp + cpp/src/sprite.hpp + cpp/src/tile.hpp + cpp/src/user_input.hpp + cpp/src/window.hpp +) + +# Create main executable +add_executable(pathfinding_demo ${MAIN_SOURCES} ${HEADERS}) + +# Link libraries for main executable +target_link_libraries(pathfinding_demo + ${SDL3_LIBRARIES} + ${SDL3_image_LIBRARIES} + OpenGL::GL + GLEW::GLEW +) + +# Add compile flags +target_compile_options(pathfinding_demo PRIVATE ${SDL3_CFLAGS_OTHER}) + +# Test executable +add_executable(tests cpp/test/test.cpp) +target_link_libraries(tests GTest::gtest GTest::gtest_main) + +# Enable testing +enable_testing() +add_test(NAME unit_tests COMMAND tests) + +# Compiler-specific options +if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + target_compile_options(pathfinding_demo PRIVATE -Wall -Wextra -Wpedantic) + target_compile_options(tests PRIVATE -Wall -Wextra -Wpedantic) +endif() + +# Debug/Release configurations +set(CMAKE_CXX_FLAGS_DEBUG "-g -O0") +set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")