-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
121 lines (116 loc) · 3.27 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
118
119
120
121
cmake_minimum_required(VERSION 3.18)
project(UpdateManager)
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
set(CMAKE_CXX_STANDARD 20)
include(GNUInstallDirs)
include(FetchContent)
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
set(THREADS_PREFER_PTHREAD_FLAG TRUE)
find_package(Threads REQUIRED)
set(BUILD_SHARED_LIBS OFF)
set(CMAKE_FIND_LIBRARY_SUFFIXES .a)
# fmt
FetchContent_Declare(fmt
GIT_REPOSITORY https://github.com/DeepForge-Technology/fmt.git
GIT_TAG master
)
FetchContent_MakeAvailable(fmt)
# jsoncpp
FetchContent_Declare(jsoncpp
GIT_REPOSITORY https://github.com/DeepForge-Technology/jsoncpp.git
GIT_TAG master
)
FetchContent_MakeAvailable(jsoncpp)
FetchContent_Declare(SQLite
GIT_REPOSITORY https://github.com/DeepForge-Technology/SQLite.git
GIT_TAG master
)
FetchContent_MakeAvailable(SQLite)
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
set(CMAKE_CXX_FLAGS_DEBUG
"/DWIN32 /D_WINDOWS /EHsc /WX /wd4355 /wd4251 /wd4250 /wd4996"
CACHE STRING "Debug compiler flags" FORCE
)
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_CXX_FLAGS} -I /usr/local/include -I ../../include -DCURL_STATICLIB -Bstatic")
endif()
#target_include_directories(UpdateManager PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/include)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/include)
set(SOURCE_FILES
./src/UpdateManager.cpp
./src/DatabaseConnect.cpp
./src/DatabaseConnect.hpp
)
add_executable(UpdateManager ${SOURCE_FILES})
if (WIN32)
set(LIBRARIES
fmt::fmt
urlmon
winmm
jsoncpp_static
ws2_32
SQLite
Threads::Threads
)
elseif(APPLE)
set(CMAKE_CXX_FLAGS "-lstdc++")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_CXX_FLAGS} -lstdc++")
FetchContent_Declare(libzip
GIT_REPOSITORY https://github.com/DeepForge-Technology/libzip.git
GIT_TAG master
)
FetchContent_MakeAvailable(libzip)
# find_package(libzip REQUIRED)
# find_package(CURL)
# if(CURL_FOUND)
# include_directories(${CURL_INCLUDE_DIR})
# set(requiredlibs ${requiredlibs} ${CURL_LIBRARIES} )
# else(CURL_FOUND)
# message(FATAL_ERROR "Could not find the CURL library and development files.")
# endif(CURL_FOUND)
FetchContent_Declare(libcurl
GIT_REPOSITORY https://github.com/DeepForge-Technology/curl.git
GIT_TAG master
)
FetchContent_MakeAvailable(libcurl)
set(LIBRARIES
fmt::fmt
jsoncpp_static
libcurl_static
zip
SQLite
Threads::Threads
)
elseif(UNIX)
FetchContent_Declare(libzip
GIT_REPOSITORY https://github.com/DeepForge-Technology/libzip.git
GIT_TAG master
)
FetchContent_MakeAvailable(libzip)
#find_package(CURL)
#if(CURL_FOUND)
# include_directories(${CURL_INCLUDE_DIR})
# set(requiredlibs ${requiredlibs} ${CURL_LIBRARIES} )
#else(CURL_FOUND)
# message(FATAL_ERROR "Could not find the CURL library and development file")
#endif(CURL_FOUND)
FetchContent_Declare(libcurl
GIT_REPOSITORY https://github.com/DeepForge-Technology/curl.git
GIT_TAG master
)
FetchContent_MakeAvailable(libcurl)
set(LIBRARIES
fmt::fmt
jsoncpp
libcurl_static
SQLite
zip
Threads::Threads
)
endif()
target_sources(UpdateManager PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/resource.rc)
target_link_libraries(UpdateManager
PRIVATE
${LIBRARIES}
)