|
1 | 1 | cmake_minimum_required(VERSION 3.1) |
2 | 2 |
|
3 | | -project(rme) |
| 3 | +project(cmake) |
4 | 4 |
|
5 | | -if(NOT CMAKE_BUILD_TYPE) |
6 | | - set(CMAKE_BUILD_TYPE RelWithDebInfo) |
| 5 | +# ***************************************************************************** |
| 6 | +# Vcpkg Configs |
| 7 | +# ***************************************************************************** |
| 8 | + |
| 9 | +if(DEFINED ENV{VCPKG_ROOT} AND NOT DEFINED CMAKE_TOOLCHAIN_FILE) |
| 10 | + set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" CACHE STRING "") |
| 11 | +endif() |
| 12 | + |
| 13 | +if(DEFINED ENV{VCPKG_DEFAULT_TRIPLET} AND NOT DEFINED VCPKG_TARGET_TRIPLET) |
| 14 | + set(VCPKG_TARGET_TRIPLET "$ENV{VCPKG_DEFAULT_TRIPLET}" CACHE STRING "") |
| 15 | +endif() |
| 16 | + |
| 17 | +set(VCPKG_FEATURE_FLAGS "versions") |
| 18 | +set(VCPKG_BUILD_TYPE "release") |
| 19 | + |
| 20 | +# ***************************************************************************** |
| 21 | +# Set Configs |
| 22 | +# ***************************************************************************** |
| 23 | + |
| 24 | +set(CMAKE_CXX_STANDARD 20) |
| 25 | +set(GNUCXX_MINIMUM_VERSION 11) |
| 26 | +set(MSVC_MINIMUM_VERSION "19.32") |
| 27 | +set(CMAKE_CXX_STANDARD_REQUIRED ON) |
| 28 | + |
| 29 | +# ***************************************************************************** |
| 30 | +# Options |
| 31 | +# ***************************************************************************** |
| 32 | +option(OPTIONS_ENABLE_CCACHE "Enable ccache" OFF) |
| 33 | +option(OPTIONS_ENABLE_SCCACHE "Use sccache to speed up compilation process" OFF) |
| 34 | + |
| 35 | +# ***************************************************************************** |
| 36 | +# Set Sanity Check |
| 37 | +# ***************************************************************************** |
| 38 | + |
| 39 | +# === GCC Minimum Version === |
| 40 | +if (CMAKE_COMPILER_IS_GNUCXX) |
| 41 | + message("-- Compiler: GCC - Version: ${CMAKE_CXX_COMPILER_VERSION}") |
| 42 | + if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS GNUCXX_MINIMUM_VERSION) |
| 43 | + message(FATAL_ERROR "GCC version must be at least ${GNUCXX_MINIMUM_VERSION}!") |
| 44 | + endif() |
| 45 | +endif() |
| 46 | + |
| 47 | +# === Minimum required version for visual studio === |
| 48 | +if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") |
| 49 | + message("-- Compiler: Visual Studio - Version: ${CMAKE_CXX_COMPILER_VERSION}") |
| 50 | + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS MSVC_MINIMUM_VERSION) |
| 51 | + message(FATAL_ERROR "Visual Studio version must be at least ${MSVC_MINIMUM_VERSION}") |
| 52 | + endif() |
| 53 | +endif() |
| 54 | + |
| 55 | +# ***************************************************************************** |
| 56 | +# Append cmake search path |
| 57 | +# ***************************************************************************** |
| 58 | +list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) |
| 59 | + |
| 60 | +# ***************************************************************************** |
| 61 | +# Include cmake tools |
| 62 | +# ***************************************************************************** |
| 63 | +include(MessageColors) |
| 64 | +include(LoggingHelper) |
| 65 | + |
| 66 | +# ***************************************************************************** |
| 67 | +# Options Code |
| 68 | +# ***************************************************************************** |
| 69 | + |
| 70 | +# === CCACHE === |
| 71 | +if(OPTIONS_ENABLE_CCACHE) |
| 72 | + find_program(CCACHE ccache) |
| 73 | + if(CCACHE) |
| 74 | + log_option_enabled("ccache") |
| 75 | + set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE}) |
| 76 | + else() |
| 77 | + log_option_disabled("ccache") |
| 78 | + endif() |
| 79 | +endif() |
| 80 | + |
| 81 | +# === SCCACHE === |
| 82 | +if(OPTIONS_ENABLE_SCCACHE) |
| 83 | + find_program(SCCACHE_PATH sccache) |
| 84 | + if(SCCACHE_PATH) |
| 85 | + log_option_enabled("sccache") |
| 86 | + set(CMAKE_C_COMPILER_LAUNCHER ${SCCACHE_PATH}) |
| 87 | + set(CMAKE_CXX_COMPILER_LAUNCHER ${SCCACHE_PATH}) |
| 88 | + else() |
| 89 | + log_option_disabled("sccache") |
| 90 | + endif() |
7 | 91 | endif() |
8 | 92 |
|
9 | | -find_package(OpenGL REQUIRED) |
10 | | - |
11 | | -# LibArchive disabled in compilation level by default, see "#define OTGZ_SUPPORT" in the "definitions.h" file |
12 | | -#if(APPLE) |
13 | | -# set(CMAKE_PREFIX_PATH /usr/local/opt/libarchive) |
14 | | -#endif() |
15 | | -# If you need use, enable this: |
16 | | -#find_package(LibArchive REQUIRED) |
17 | | -#${LibArchive_INCLUDE_DIRS} ${LibArchive_LIBRARIES} |
18 | | - |
19 | | -find_package(asio CONFIG REQUIRED) |
20 | | -find_package(Threads REQUIRED) |
21 | | -find_package(wxWidgets COMPONENTS html aui gl adv core net base CONFIG REQUIRED) |
22 | | - |
23 | | -find_package(GLUT REQUIRED) |
24 | | -find_package(ZLIB REQUIRED) |
25 | | -find_package(fmt CONFIG REQUIRED) |
26 | | -find_package(nlohmann_json CONFIG REQUIRED) |
27 | | - |
28 | | -include(source/CMakeLists.txt) |
29 | | - |
30 | | -add_executable(${PROJECT_NAME} ${rme_H} ${rme_SRC}) |
31 | | - |
32 | | -set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 20) |
33 | | -set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD_REQUIRED ON) |
34 | | - |
35 | | -# === PRECOMPILED HEADER === |
36 | | -target_precompile_headers(${PROJECT_NAME} PRIVATE source/main.h) |
37 | | - |
38 | | -include_directories( |
39 | | - ${OPENGL_INCLUDE_DIR} |
40 | | - ${GLUT_INCLUDE_DIRS} |
41 | | - ${ZLIB_INCLUDE_DIR} |
42 | | -) |
43 | | - |
44 | | -target_link_libraries(${PROJECT_NAME} |
45 | | - ${wxWidgets_LIBRARIES} |
46 | | - ${OPENGL_LIBRARIES} |
47 | | - ${GLUT_LIBRARIES} |
48 | | - ${ZLIB_LIBRARIES} |
49 | | - fmt::fmt |
50 | | - asio::asio |
51 | | - nlohmann_json::nlohmann_json |
52 | | -) |
| 93 | +# ***************************************************************************** |
| 94 | +# Add source project |
| 95 | +# ***************************************************************************** |
| 96 | +add_subdirectory(source) |
0 commit comments