From 1a3198dc5d9c9f4d26da0593647b6068fccb4a58 Mon Sep 17 00:00:00 2001 From: rich Date: Fri, 9 May 2025 15:41:17 -0400 Subject: [PATCH] initial commit --- CMakeLists.txt | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..436fc2f --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,86 @@ +# Define what CMake versions this project targets. +cmake_minimum_required(VERSION 3.18..3.29) + +# Define our project. +project(ReMaze + VERSION 0.1 + LANGUAGES CXX) + +# Prevent building in main directory, it generates lots of clutter! +if (PROJECT_SOURCE_DIR STREQUAL PROJECT_BINARY_DIR) + message(FATAL_ERROR "In-source builds are not allowed") +endif() + +# Set C++ version. +set(CMAKE_CXX_STANDARD 20) + +# Set optimisation level. +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0") + +# Include addon scripts from the 'cmake' directory. +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") + +# Include CMake Package Manager. +include(cmake/CPM.cmake) + +# Automatically clone, compile and link external libraries. +CPMAddPackage( + NAME ReUnirand + URL https://git.redacted.cc/rich/ReUnirand/archive/Prerelease-1.zip +) + +CPMAddPackage( + NAME mcolor + URL https://git.redacted.cc/maxine/mcolor/archive/Prerelease-5.zip +) + +CPMAddPackage( + NAME ReWindow + URL https://git.redacted.cc/Redacted/ReWindow/archive/Prerelease-32.zip +) + +CPMAddPackage( + NAME JGL + URL https://git.redacted.cc/josh/JGL/archive/Prerelease-47.zip +) + +# Collect header files. +file(GLOB_RECURSE HEADERS "include/ReMaze/*.hpp") + +# Define the source files separately for the library and the test application. +set(LIB_SOURCES "src/maze.cpp") +set(TEST_SOURCES "src/main.cpp") + +# Include our project's include directory. +include_directories("include") + +# Create the ReMaze library from perlin.cpp. +add_library(ReMazeLib ${LIB_SOURCES}) +target_include_directories(ReMazeLib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) + +# <<--- Add the ReUnirand include directory to the library target ---> +target_include_directories(ReMazeLib PUBLIC ${ReUnirand_SOURCE_DIR}/include) + +# Create the test executable from main.cpp. +add_executable(ReMazeApp ${TEST_SOURCES}) + +# Set additional include directories for the test application. +target_include_directories(ReMazeApp PUBLIC + ${ReUnirand_SOURCE_DIR}/include + ${ReWindow_SOURCE_DIR}/include + ${J3ML_SOURCE_DIR}/include + ${mcolor_SOURCE_DIR}/include + ${JGL_SOURCE_DIR}/include + ${CMAKE_CURRENT_SOURCE_DIR}/include +) + +# Link external libraries and our ReMazeLib library to the test executable. +target_link_libraries(ReMazeApp PUBLIC + ReMazeLib + J3ML + ReWindow + mcolor + JGL + ReUnirand +)