Skip to content

Commit 4777359

Browse files
committed
updated cmake
1 parent 9af81fe commit 4777359

File tree

1 file changed

+119
-8
lines changed

1 file changed

+119
-8
lines changed

CMakeLists.txt

Lines changed: 119 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,39 @@
1-
CMAKE_MINIMUM_REQUIRED (VERSION 3.5)
1+
CMAKE_MINIMUM_REQUIRED (VERSION 3.20)
22

3-
set(GA_SOURCES_DIR "${PROJECT_SOURCE_DIR}/source")
4-
set(DEPENDENCIES_DIR "${PROJECT_SOURCE_DIR}/source/dependencies")
3+
PROJECT (GameAnalytics)
4+
5+
set(GA_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/source")
6+
set(DEPENDENCIES_DIR "${GA_SOURCE_DIR}/dependencies")
7+
set(EXTERNALS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/externals")
8+
set(LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libs")
9+
set(GA_DIR "${CMAKE_CURRENT_SOURCE_DIR}/gameanalytics")
10+
11+
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/CMakeIncludes")
12+
13+
include("create_source_groups_macro")
14+
include("eval_condition_macro")
15+
16+
option(GA_SHARED_LIB "Build GA as a shared library" OFF)
17+
option(GA_UWP_BUILD "Build GA for UWP (if targeting windows)" OFF)
18+
option(GA_BUILD_SAMPLE "Builds the GA Sample app" ON)
19+
option(GA_USE_PACKAGE "Use installed packages for dependencies" OFF)
20+
21+
# set directories
22+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/Debug")
23+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/Release")
24+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/Debug")
25+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/Release")
26+
27+
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG -D_DEBUG")
28+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNDEBUG")
29+
30+
set(CMAKE_CXX_STANDARD 17)
531

632
include_directories(
33+
# gameanalytics includes
34+
"${GA_SOURCE_DIR}/gameanalytics"
35+
36+
# depndencies includes
737
"${DEPENDENCIES_DIR}"
838
"${DEPENDENCIES_DIR}/crossguid"
939
"${DEPENDENCIES_DIR}/nlohmann"
@@ -12,10 +42,91 @@ include_directories(
1242
"${DEPENDENCIES_DIR}/sqlite"
1343
"${DEPENDENCIES_DIR}/crypto"
1444
"${DEPENDENCIES_DIR}/miniz"
15-
"${DEPENDENCIES_DIR}/curl/include"
45+
"${EXTERNALS_DIR}/curl/include"
46+
"${EXTERNALS_DIR}/openssl/include"
1647
)
1748

18-
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/Debug")
19-
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/Release")
20-
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/Debug")
21-
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/Release")
49+
FILE(GLOB_RECURSE CPP_SOURCES
50+
# Add GameAnalytics Sources
51+
"${GA_SOURCE_DIR}/gameanalytics/*.h"
52+
"${GA_SOURCE_DIR}/gameanalytics/*.cpp"
53+
54+
# Add dependencies
55+
"${DEPENDENCIES_DIR}/crossguid/*"
56+
"${DEPENDENCIES_DIR}/nlohmann/*"
57+
"${DEPENDENCIES_DIR}/stacktrace/*"
58+
"${DEPENDENCIES_DIR}/zf_log/*"
59+
"${DEPENDENCIES_DIR}/sqlite/*"
60+
"${DEPENDENCIES_DIR}/crypto/*"
61+
"${DEPENDENCIES_DIR}/miniz/*"
62+
"${DEPENDENCIES_DIR}/stackwalker/*"
63+
)
64+
65+
create_source_groups(CPP_SOURCES)
66+
67+
if(${GA_USE_PACKAGE})
68+
find_package(CURL REQUIRED PATHS ${EXTERNALS_DIR}/curl)
69+
find_package(OpenSSL REQUIRED PATHS ${EXTERNALS_DIR}/openssl)
70+
set(LIBS CURL::libcurl)
71+
else()
72+
add_definitions("-DUSE_OPENSSL -DCURL_STATICLIB")
73+
add_definitions("-DCRYPTOPP_DISABLE_ASM")
74+
75+
link_directories(
76+
"${EXTERNALS_DIR}/openssl/1.1.1d/libs/${PLATFORM}"
77+
"${EXTERNALS_DIR}/curl/lib/${PLATFORM}"
78+
)
79+
80+
if(WIN32)
81+
set(LIBS libcurl.lib libeay32.lib ssleay32.lib)
82+
else()
83+
set(LIBS libcurl.a libssl.a libcrypto.a)
84+
endif()
85+
86+
endif()
87+
88+
if(${GA_SHARED_LIB})
89+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGA_SHARED_LIB")
90+
set(LIB_TYPE SHARED)
91+
else()
92+
set(LIB_TYPE STATIC)
93+
endif()
94+
95+
if(WIN32)
96+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGUID_WINDOWS")
97+
if(${GA_SHARED_LIB})
98+
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd")
99+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD")
100+
else()
101+
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
102+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
103+
endif()
104+
105+
if(${GA_UWP_BUILD})
106+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGA_UWP_BUILD")
107+
endif()
108+
109+
elseif(APPLE)
110+
111+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGUID_CFUUID")
112+
FILE(GLOB_RECURSE MACOS_SOURCES "${GA_SOURCE_DIR}/gameanalytics/Platform/*.mm")
113+
list(APPEND CPP_SOURCES ${MACOS_SOURCES})
114+
list(APPEND LIBS
115+
"-framework CoreFoundation"
116+
"-framework Foundation"
117+
"-framework CoreServices"
118+
"-framework systemconfiguration"
119+
)
120+
121+
create_source_groups(MACOS_SOURCES)
122+
123+
elseif(LINUX)
124+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGUID_LIBUUID")
125+
endif()
126+
127+
if(${GA_BUILD_SAMPLE})
128+
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/sample")
129+
endif()
130+
131+
add_library(GameAnalytics ${LIB_TYPE} ${CPP_SOURCES})
132+
target_link_libraries(GameAnalytics ${LIBS})

0 commit comments

Comments
 (0)