1
0
Files
BasaltMeter/BasaltPresenter/CMakeLists.txt

86 lines
3.0 KiB
CMake

# Minimum required CMake version
cmake_minimum_required(VERSION 3.23)
# Project definition
project(Basalt
VERSION 0.0.1
LANGUAGES CXX
)
# Provide options
# Render Engines
# option(BASALT_DIRECTX8_ENGINE "Build with DirectX 8 render engine support." OFF)
# option(BASALT_DIRECTX9_ENGINE "Build with DirectX 9 render engine support." OFF)
option(BASALT_DIRECTX11_ENGINE "Build with DirectX 11 render engine support." OFF)
# option(BASALT_DIRECTX12_ENGINE "Build with DirectX 12 render engine support." OFF)
# option(BASALT_OPENGL_ENGINE "Build with OpenGL render engine support." OFF)
# option(BASALT_VULKAN_ENGINE "Build with Vulkan render engine support." OFF)
# Data Delivers
option(BASALT_CUDA_DELIVER "Build with CUDA data deliver support." OFF)
# option(BASALT_ROCM_DELIVER "Build with ROCm data deliver support." OFF)
option(BASALT_PIPE_DELIVER "Build with system pipe data deliver support." OFF)
# option(BASALT_TCP_DELIVER "Build with TCP data deliver support." OFF)
# option(BASALT_MMAP_DELIVER "Build with system shared memory data deliver support." OFF)
# 3D Objects Loaders
option(BASALT_OBJ_OBJECT_LOADER "Build with Wavefront OBJ 3D object loader support." OFF)
option(BASALT_GLTF_OBJECT_LOADER "Build with glTF 3D object loader support." OFF)
option(BASALT_ASSIMP_OBJECT_LOADER "Build with Assimp 3D object loader support." OFF)
# Camera Motion Loaders
option(BASALT_CHICKENNUGGET_ANIME_LOADER "Build with chicken nugget camera motion loader support." OFF)
# Set C++ standards
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# Include some essential CMake components
include(GNUInstallDirs)
# Add out CMake in module found path
set(CMAKE_MODULE_PATH
"${CMAKE_CURRENT_LIST_DIR}/CMake"
)
# Find required packages based on options
find_package(spdlog REQUIRED)
if (BASALT_CUDA_DELIVER)
find_package(CUDAToolkit REQUIRED)
endif ()
if (BASALT_DIRECTX11_ENGINE)
find_package(DirectX11 REQUIRED)
endif ()
if (BASALT_OBJ_OBJECT_LOADER)
find_package(tinyobjloader REQUIRED)
endif ()
# Include projects
add_subdirectory(Shared)
add_subdirectory(Presenter)
add_subdirectory(Plugins)
# Install target and package
# Install target
install(EXPORT BasaltSharedTargets
FILE BasaltSharedTargets.cmake
NAMESPACE BasaltShared::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/BasaltShared
)
# Package configuration file
include(CMakePackageConfigHelpers)
write_basic_package_version_file(
BasaltSharedConfigVersion.cmake
VERSION ${PACKAGE_VERSION}
COMPATIBILITY SameMinorVersion
)
configure_package_config_file(
${CMAKE_CURRENT_LIST_DIR}/CMake/BasaltSharedConfig.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}/BasaltSharedConfig.cmake"
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/BasaltShared
)
# Copy package files to install destination
install(
FILES
"${CMAKE_CURRENT_BINARY_DIR}/BasaltSharedConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/BasaltSharedConfigVersion.cmake"
DESTINATION
${CMAKE_INSTALL_LIBDIR}/cmake/BasaltShared
)