-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCMakeLists.txt
130 lines (123 loc) · 2.77 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
122
123
124
125
126
127
128
129
130
CMAKE_MINIMUM_REQUIRED(VERSION 3.10.0)
project(
NeteaseCloudMusic-C-API
C
CXX
)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(NCM_C_API_SRC_DIR ${CMAKE_SOURCE_DIR}/src)
set(NCM_C_UNIT_TEST_SRC_DIR ${CMAKE_SOURCE_DIR}/unit_test)
# Include non-platform specific libraries
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/3rd/cJSON)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/3rd/cJSON)
# Specifying library exclusive for Windows
if(WIN32)
message(win32test)
if (MINGW)
# TODO add MINGW build
message(mingw detected)
elseif(MSVC)
message(MSVC detected)
include_directories(
${CMAKE_SOURCE_DIR}/3rd/include
)
#libcurl
add_library(
libcurl
STATIC
IMPORTED
)
set_target_properties(
libcurl
PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/3rd/win_libs/lib/libcurl.lib
)
#libssl
add_library(
libssl
STATIC
IMPORTED
)
set_target_properties(
libssl
PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/3rd/win_libs/lib/libssl.lib
)
#zlib
add_library(
zlib
STATIC
IMPORTED
)
set_target_properties(
zlib
PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/3rd/win_libs/lib/zdll.lib
)
#libcrypto
add_library(
libcrypto
STATIC
IMPORTED
)
set_target_properties(
libcrypto
PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/3rd/win_libs/lib/libcrypto.lib
)
endif()
# Platform related Installation for Windows
install(FILES ${CMAKE_SOURCE_DIR}/3rd/win_libs/bin/libcrypto-1_1-x64.dll DESTINATION ${CMAKE_BINARY_DIR})
install(FILES ${CMAKE_SOURCE_DIR}/3rd/win_libs/bin/libcurl.dll DESTINATION ${CMAKE_BINARY_DIR})
install(FILES ${CMAKE_SOURCE_DIR}/3rd/win_libs/bin/libssl-1_1-x64.dll DESTINATION ${CMAKE_BINARY_DIR})
install(FILES ${CMAKE_SOURCE_DIR}/3rd/win_libs/bin/zlib1.dll DESTINATION ${CMAKE_BINARY_DIR})
endif()
# Add NCM-C-API core library
add_library(
ncm_c_core
STATIC
${NCM_C_API_SRC_DIR}/netease_api.c
${NCM_C_API_SRC_DIR}/request.c
${NCM_C_API_SRC_DIR}/crypto.c
)
target_link_libraries(
ncm_c_core
libcurl
libssl
zlib
libcrypto
# non-platform-specific
cjson
)
target_include_directories(
ncm_c_core PRIVATE include
)
# Add NCM-C unit test
add_executable(
ut_basic_api_call
${NCM_C_UNIT_TEST_SRC_DIR}/basic_api_call.c
)
target_include_directories(
ut_basic_api_call PRIVATE include
)
target_link_libraries(
ut_basic_api_call
ncm_c_core
)
add_executable(
ut_basic_eapi
${NCM_C_UNIT_TEST_SRC_DIR}/basic_eapi.c
)
target_include_directories(
ut_basic_eapi PRIVATE include
)
target_link_libraries(
ut_basic_eapi
ncm_c_core
)
# Install non-platform specific libraries
install(TARGETS cjson DESTINATION ${CMAKE_BINARY_DIR})
#cert install
install(FILES ${CMAKE_SOURCE_DIR}/cert/cacert-2023-05-30.pem DESTINATION ${CMAKE_BINARY_DIR})