Files
ReNoise/CMakeLists.txt
2025-02-02 14:35:37 -05:00

87 lines
2.4 KiB
CMake

# Define what CMake versions this project targets.
cmake_minimum_required(VERSION 3.18..3.29)
# Define our project.
project(ReNoise
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/ReNoise/*.hpp")
# Define the source files separately for the library and the test application.
set(LIB_SOURCES "src/perlin.cpp")
set(TEST_SOURCES "src/main.cpp")
# Include our project's include directory.
include_directories("include")
# Create the ReNoise library from perlin.cpp.
add_library(ReNoiseLib ${LIB_SOURCES})
target_include_directories(ReNoiseLib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
# <<--- Add the ReUnirand include directory to the library target --->
target_include_directories(ReNoiseLib PUBLIC ${ReUnirand_SOURCE_DIR}/include)
# Create the test executable from main.cpp.
add_executable(ReNoiseApp ${TEST_SOURCES})
# Set additional include directories for the test application.
target_include_directories(ReNoiseApp 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 ReNoiseLib library to the test executable.
target_link_libraries(ReNoiseApp PUBLIC
ReNoiseLib
J3ML
ReWindow
mcolor
JGL
ReUnirand
)