-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
62 lines (50 loc) · 1.65 KB
/
CMakeLists.txt
File metadata and controls
62 lines (50 loc) · 1.65 KB
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
# AetherEngine
cmake_minimum_required(VERSION 3.31.6)
set(AETHER AetherEngine)
include(cmake/version.cmake)
project(${AETHER} VERSION ${AETHER_VERSION} LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
option(AETHER_VERBOSE_LOGS "Enable verbose debug logs" OFF)
add_executable(${AETHER})
# source files
add_subdirectory(aether)
add_subdirectory(external)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/cmake/version.h.in
${CMAKE_CURRENT_BINARY_DIR}/generated/aether/version.h
@ONLY
)
# includes
target_include_directories(${AETHER}
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/include
${CMAKE_CURRENT_BINARY_DIR}/generated
)
target_compile_definitions(${AETHER}
PRIVATE
$<$<CONFIG:Debug>:AETHER_DEBUG>
$<$<BOOL:${AETHER_VERBOSE_LOGS}>:AETHER_VERBOSE_LOGS>
)
include(cmake/dependencies.cmake)
aether_fetch_dependencies(${AETHER})
if (WIN32)
# MinGW (GCC)
if (MINGW OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
target_link_options(${AETHER} PRIVATE
$<$<CONFIG:Debug>:-mconsole>
$<$<NOT:$<CONFIG:Debug>>:-mwindows>
)
else()
# MSVC
target_link_options(${AETHER} PRIVATE
$<$<CONFIG:Debug>:/SUBSYSTEM:CONSOLE>
$<$<NOT:$<CONFIG:Debug>>:/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup>
)
endif()
endif()
add_custom_command(TARGET ${AETHER} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E remove_directory $<TARGET_FILE_DIR:${AETHER}>/resources
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/resources $<TARGET_FILE_DIR:${AETHER}>/resources
)