initial commit
This commit is contained in:
86
CMakeLists.txt
Normal file
86
CMakeLists.txt
Normal file
@@ -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
|
||||
)
|
Reference in New Issue
Block a user