/
CMakeLists.txt
40 lines (31 loc) · 1.48 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
cmake_minimum_required(VERSION 3.13)
project(molumes)
if (MSVC)
# MSVC currently only supports some c++20 features in their "preview" branch, which is enabled in CMake by setting the standard to 23
# See https://github.com/microsoft/STL/issues/1814
set(CMAKE_CXX_STANDARD 23)
else()
set(CMAKE_CXX_STANDARD 20)
endif()
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/config/cmake-modules")
option(AUTO_FETCH_AND_BUILD_DEPENDENCIES "Automatically fetch and build external dependencies" OFF)
option(FAKE_HAPTIC_SIMULATION "Fake a haptic simulation (for debugging)" OFF)
if (AUTO_FETCH_AND_BUILD_DEPENDENCIES)
include(${CMAKE_SOURCE_DIR}/config/buildexternals.cmake)
endif()
add_library(ext)
add_executable(molumes)
# MSVC Specific options to silence warnings from external libraries
if (MSVC)
target_compile_options(ext PRIVATE /w)
target_compile_options(molumes PRIVATE /external:anglebrackets /external:I ./lib /external:W0 /WX)
# For MSVC < 16.10:
# target_compile_options(molumes PRIVATE /experimental:external /external:anglebrackets /external:I ./lib /external:W0 /WX)
endif()
add_compile_definitions($<$<CONFIG:RELEASE>:NDEBUG>)
set(CMAKE_BUILD_PARALLEL_LEVEL 8)
add_subdirectory(src)
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT molumes)