-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
105 lines (84 loc) · 3.55 KB
/
CMakeLists.txt
File metadata and controls
105 lines (84 loc) · 3.55 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
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
cmake_minimum_required(VERSION 3.20)
project(DasherGTK)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Dasher)
###############################
# Building Dasher Library
###############################
add_subdirectory("DasherCore")
###############################
# Using/Building GTK
###############################
find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK REQUIRED gtk4)
pkg_check_modules(GTKMM REQUIRED gtkmm-4.0)
###############################
# Using/Building SDL2
###############################
set(SDL_STATIC ON CACHE BOOL "" FORCE)
set(SDL_SHARED OFF CACHE BOOL "" FORCE)
set(SDL_UNIX_CONSOLE_BUILD ON CACHE BOOL "" FORCE)
set(SDL_AUDIO OFF CACHE BOOL "" FORCE)
set(SDL_VIDEO OFF CACHE BOOL "" FORCE)
set(SDL_GPU OFF CACHE BOOL "" FORCE)
set(SDL_RENDER OFF CACHE BOOL "" FORCE)
set(SDL_CAMERA OFF CACHE BOOL "" FORCE)
set(SDL_JOYSTICK ON CACHE BOOL "" FORCE)
set(SDL_HAPTIC ON CACHE BOOL "" FORCE)
set(SDL_HIDAPI ON CACHE BOOL "" FORCE)
set(SDL_POWER OFF CACHE BOOL "" FORCE)
set(SDL_SENSOR OFF CACHE BOOL "" FORCE)
set(SDL_DIALOG OFF CACHE BOOL "" FORCE)
# Workaround for "Undefined symbols for architecture arm64", see https://github.com/libsdl-org/SDL/issues/13235
IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(SDL_VIDEO ON CACHE BOOL "" FORCE)
ENDIF()
add_subdirectory("Thirdparty/SDL" EXCLUDE_FROM_ALL)
###############################
# Building Dasher-UI
###############################
file(GLOB_RECURSE HEADER_FILES CONFIGURE_DEPENDS
${CMAKE_CURRENT_LIST_DIR}/src/*.h
${CMAKE_CURRENT_LIST_DIR}/src/**/*.h
)
file(GLOB_RECURSE SOURCE_FILES CONFIGURE_DEPENDS
${CMAKE_CURRENT_LIST_DIR}/src/*.cpp
${CMAKE_CURRENT_LIST_DIR}/src/**/*.cpp
${CMAKE_CURRENT_LIST_DIR}/src/**/*.css
)
ADD_Executable(Dasher
${HEADER_FILES}
${SOURCE_FILES}
)
# Hide console window on windows builds
if(WIN32)
set_target_properties(Dasher PROPERTIES
LINK_FLAGS /SUBSYSTEM:WINDOWS
)
endif()
add_dependencies(Dasher DasherCore)
target_link_libraries(Dasher PRIVATE DasherCore SDL3::SDL3 ${GTK_LIBRARIES} ${GTKMM_LIBRARIES})
target_include_directories(Dasher SYSTEM PRIVATE ${GTK_INCLUDE_DIRS} ${GTKMM_INCLUDE_DIRS})
target_include_directories(Dasher PRIVATE ${CMAKE_CURRENT_LIST_DIR}/src/)
target_include_directories(Dasher PRIVATE ${CMAKE_CURRENT_LIST_DIR}/Thirdparty/SDL/include/)
target_link_directories(Dasher PRIVATE ${GTK_LIBRARY_DIRS} ${GTKMM_LIBRARY_DIRS})
###############################
# Setting up runtime environment
###############################
file(GLOB DATA_FILES
${PROJECT_SOURCE_DIR}/DasherCore/Data/alphabets/alphabet*.xml
${PROJECT_SOURCE_DIR}/DasherCore/Data/colors/color*.xml
${PROJECT_SOURCE_DIR}/DasherCore/Data/control/control*.xml
${PROJECT_SOURCE_DIR}/DasherCore/Data/training/training*.txt
)
file(COPY ${DATA_FILES} DESTINATION ${CMAKE_BINARY_DIR}/Dasher/Data)
file(COPY ${PROJECT_SOURCE_DIR}/Resources/ DESTINATION ${CMAKE_BINARY_DIR}/Dasher/Resources)
file(COPY ${PROJECT_SOURCE_DIR}/src/UIStyle.css DESTINATION ${CMAKE_BINARY_DIR}/Dasher/)
# Copy Licenses
file(COPY_FILE ${PROJECT_SOURCE_DIR}/Thirdparty/SDL/LICENSE.txt ${CMAKE_BINARY_DIR}/Dasher/Resources/License/LICENSE_SDL.txt)
file(COPY_FILE ${PROJECT_SOURCE_DIR}/DasherCore/Thirdparty/pugixml/LICENSE.md ${CMAKE_BINARY_DIR}/Dasher/Resources/License/LICENSE_PugiXML.txt)
###############################
# Setting up deployment
###############################
install(DIRECTORY ${CMAKE_BINARY_DIR}/Dasher/ DESTINATION .)