forked from Drewol/unnamed-sdvx-clone
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
117 lines (96 loc) · 4.19 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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# Root CMake file
cmake_minimum_required(VERSION 3.8)
#set(VCPKG_CRT_LINKAGE static)
#set(VCPKG_LIBRARY_LINKAGE static)
#set(VCPKG_TARGET_TRIPLET "x64-windows-static" CACHE STRING "Vcpkg target triplet (ex. x86-windows)")
if(DEFINED ENV{VCPKG_ROOT} AND NOT DEFINED CMAKE_TOOLCHAIN_FILE)
set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
CACHE STRING "")
message("Found vcpkg root '$ENV{VCPKG_ROOT}'")
elseif(WIN32 AND NOT DEFINED CMAKE_TOOLCHAIN_FILE)
message(FATAL_ERROR "Could not find vcpkg root")
endif()
project(USC VERSION 0.4.0)
if(WIN32 AND ${CMAKE_VERSION} VERSION_GREATER "3.12")
cmake_policy(SET CMP0079 NEW)
endif()
# Project configurations
set(CMAKE_CONFIGURATION_TYPES Debug Release)
set(CMAKE_DEBUG_POSTFIX _Debug)
set(CMAKE_RELEASE_POSTFIX _Release)
execute_process(COMMAND git log -1 --date=short --format="%cd_%h"
OUTPUT_VARIABLE GIT_DATE_HASH
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
# Set output folders
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
foreach( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} )
string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG )
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${PROJECT_SOURCE_DIR}/bin )
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${PROJECT_SOURCE_DIR}/bin )
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${PROJECT_SOURCE_DIR}/lib )
endforeach( OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES )
set(CMAKE_MACOSX_RPATH 1)
# Set folder where to find FindXXX.cmake and
set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/Modules/")
# Find external dependencies
find_package(Freetype REQUIRED)
find_package(ZLIB REQUIRED)
find_package(SDL2 REQUIRED)
find_package(PNG REQUIRED)
find_package(JPEG REQUIRED)
find_package(Vorbis REQUIRED)
find_package(OGG REQUIRED)
find_package(LibArchive REQUIRED)
# All projects use unicode define
# this is mainly for windows functions either being defined to call A or W prefixed functions
add_definitions(-DUNICODE -D_UNICODE)
OPTION(EMBEDDED "Enable embedded build" OFF)
if(EMBEDDED)
message("Enabling embedded build")
add_definitions(-DEMBEDDED)
endif()
# Include macros
include(${PROJECT_SOURCE_DIR}/cmake/Macros.cmake)
# Sub-Project directories
add_subdirectory(third_party)
add_subdirectory(Shared)
add_subdirectory(Graphics)
add_subdirectory(Main)
add_subdirectory(Audio)
add_subdirectory(Beatmap)
add_subdirectory(GUI)
# Unit test projects
add_subdirectory(Tests)
add_subdirectory(Tests.Shared)
add_subdirectory(Tests.Game)
# Enabled project filters on windows
if(MSVC)
#updater for windows
add_subdirectory(updater)
# Use filters in VS projects
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
# Set usc-game as default target in VS
set_directory_properties(PROPERTY VS_STARTUP_PROJECT usc-game)
# Put all third party libraries in a seperate folder in the VS solution
set_target_properties(cpr PROPERTIES FOLDER "Third Party")
set_target_properties(nanovg PROPERTIES FOLDER "Third Party")
set_target_properties(sqlite3 PROPERTIES FOLDER "Third Party")
set_target_properties(discord-rpc PROPERTIES FOLDER "Third Party")
set_target_properties(minimp3 PROPERTIES FOLDER "Third Party")
set_target_properties(soundtouch PROPERTIES FOLDER "Third Party")
set_target_properties(lua PROPERTIES FOLDER "Third Party")
set_target_properties(GLEW PROPERTIES FOLDER "Third Party")
# My libraries in the libraries folder
set_target_properties(Shared PROPERTIES FOLDER Libraries)
set_target_properties(Graphics PROPERTIES FOLDER Libraries)
set_target_properties(Audio PROPERTIES FOLDER Libraries)
set_target_properties(Beatmap PROPERTIES FOLDER Libraries)
set_target_properties(GUI PROPERTIES FOLDER Libraries)
# Unit tests
set_target_properties(Tests PROPERTIES FOLDER "Tests")
set_target_properties(Tests.Shared PROPERTIES FOLDER "Tests")
set_target_properties(Tests.Game PROPERTIES FOLDER "Tests")
endif(MSVC)