-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
195 lines (172 loc) · 6.58 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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
cmake_minimum_required(VERSION 3.16)
file (STRINGS "version" BUILD_VERSION)
project(rithmic_zorro_plugin
VERSION ${BUILD_VERSION}
LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
if (CMAKE_BUILD_TYPE MATCHES Debug)
add_definitions(-DDEBUG)
endif()
if (CMAKE_BUILD_TYPE MATCHES Release)
add_definitions(-DNDEBUG)
endif()
find_package(spdlog REQUIRED CONFIG)
add_definitions(-DSPDLOG_USE_STD_FORMAT -DSPDLOG_USE_STD_FORMAT_HO)
configure_file(src/version.h.in ${CMAKE_CURRENT_BINARY_DIR}/version.h)
# Enable precompiled headers
set(CMAKE_CXX_PCH_ENABLED TRUE)
set(RITHMIC_INCLUDE_DIR "$ENV{RITHMIC_API_INCLUDE_DIR}")
set(RITHMIC_LIB_DIR "$ENV{RITHMIC_API_LIB_DIR}")
message(STATUS "R|Api+ include: ${RITHMIC_INCLUDE_DIR}")
message(STATUS "R|Api+ lib: ${RITHMIC_LIB_DIR}")
message(STATUS "Zorro: $ENV{ZORRO_ROOT}")
message(STATUS "spdlog: ${spdlog_DIR}")
if (NOT EXISTS ${RITHMIC_INCLUDE_DIR})
message(FATAL_ERROR "R|Api+ include diretory ${RITHMIC_INCLUDE_DIR} doesn't exist")
endif()
if (NOT EXISTS ${RITHMIC_LIB_DIR})
message(FATAL_ERROR "R|Api+ lib diretory ${RITHMIC_LIB_DIR} doesn't exist")
endif()
file(GLOB_RECURSE SOURCE_FILES src/*.cpp)
add_library(rithmic_zorro_plugin SHARED ${SOURCE_FILES})
set_target_properties(rithmic_zorro_plugin PROPERTIES OUTPUT_NAME "Rithmic")
target_include_directories(rithmic_zorro_plugin PUBLIC
${CMAKE_CURRENT_BINARY_DIR}
${RITHMIC_INCLUDE_DIR}
3rdparty/HowardHinnant/date/include
3rdparty/zorro
3rdparty/slick_queue/include
src
)
add_definitions(-D_WIN32_WINNT=0x0A00)
set(CMAKE_SUPPRESS_REGENERATION true) # supress zero_check
set_target_properties(rithmic_zorro_plugin PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
if (CMAKE_BUILD_TYPE MATCHES Debug)
if (DEFINED ENV{ZORRO_ROOT})
if ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "win32")
set_target_properties(rithmic_zorro_plugin PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG "$ENV{ZORRO_ROOT}/plugin")
else()
set_target_properties(rithmic_zorro_plugin PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG "$ENV{ZORRO_ROOT}/plugin64")
endif()
else()
set_target_properties(rithmic_zorro_plugin PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/bin/Debug")
endif()
else()
set_target_properties(rithmic_zorro_plugin PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/bin/Release")
endif()
set_target_properties(rithmic_zorro_plugin PROPERTIES LINK_INCREMENTAL ON)
target_compile_definitions(rithmic_zorro_plugin PUBLIC _UNICODE) # set CharacterSet to unicode
target_compile_definitions(rithmic_zorro_plugin PUBLIC WIN32 _WINDOWS _USRDLL Rithmic_EXPORTS) # set CharacterSet to unicode
# target_compile_options(rithmic_zorro_plugin PRIVATE "/bigobj")
# target_compile_options(rithmic_zorro_plugin PRIVATE /wd4312)
set_target_properties(rithmic_zorro_plugin PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
target_precompile_headers(rithmic_zorro_plugin PRIVATE "src/stdafx.h")
target_link_directories(rithmic_zorro_plugin PRIVATE ${RITHMIC_LIB_DIR})
if (CMAKE_BUILD_TYPE MATCHES Debug)
if ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "win32")
target_link_libraries(rithmic_zorro_plugin PRIVATE
RApiPlus_mtd.lib
OmneStreamEngine_mtd.lib
OmneChannel_mtd.lib
OmneEngine_mtd.lib
api_mtd.lib
apistb_mtd.lib
kit_mtd.lib
libcrypto_mtd.lib
libssl_mtd.lib
zlib_mtd.lib
libucrtd.lib
libvcruntimed.lib
libcmtd.lib
LIBCPMTD.LIB
)
else()
target_link_libraries(rithmic_zorro_plugin PRIVATE
RApiPlus_mtd64.lib
OmneStreamEngine_mtd64.lib
OmneChannel_mtd64.lib
OmneEngine_mtd64.lib
api_mtd64.lib
apistb_mtd64.lib
kit_mtd64.lib
libcrypto_mtd64.lib
libssl_mtd64.lib
zlib_mtd64.lib
libucrtd.lib
libvcruntimed.lib
libcmtd.lib
LIBCPMTD.LIB
)
endif()
endif()
if (CMAKE_BUILD_TYPE MATCHES Release)
if ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "win32")
target_link_libraries(rithmic_zorro_plugin PRIVATE
RApiPlus_mt.lib
OmneStreamEngine_mt.lib
OmneChannel_mt.lib
OmneEngine_mt.lib
api_mt.lib
apistb_mt.lib
kit_mt.lib
libcrypto_mt.lib
libssl_mt.lib
zlib_mt.lib
libucrt.lib
libvcruntime.lib
libcmt.lib
LIBCPMT.LIB
)
else()
target_link_libraries(rithmic_zorro_plugin PRIVATE
RApiPlus_mt64.lib
OmneStreamEngine_mt64.lib
OmneChannel_mt64.lib
OmneEngine_mt64.lib
api_mt64.lib
apistb_mt64.lib
kit_mt64.lib
libcrypto_mt64.lib
libssl_mt64.lib
zlib_mt64.lib
libucrt.lib
libvcruntime.lib
libcmt.lib
LIBCPMT.LIB
)
endif()
endif()
target_link_libraries(rithmic_zorro_plugin PRIVATE
ws2_32.lib
iphlpapi.lib
psapi.lib
legacy_stdio_definitions.lib
OLDNAMES.lib
bcrypt.lib
crypt32.lib
spdlog::spdlog_header_only
)
if (CMAKE_BUILD_TYPE MATCHES Release)
if ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "win32")
add_custom_command(TARGET rithmic_zorro_plugin
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/dist"
COMMAND ${CMAKE_COMMAND} -E copy "${RITHMIC_INCLUDE_DIR}/../etc/rithmic_ssl_cert_auth_params" "${CMAKE_BINARY_DIR}/bin/Release/"
COMMAND ${CMAKE_COMMAND} -E tar "cfv" "${CMAKE_BINARY_DIR}/dist/RithmicZorroPlugin_${BUILD_VERSION}.zip" --format=zip "./"
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/bin/Release"
COMMENT "Creating zip archive"
)
else()
add_custom_command(TARGET rithmic_zorro_plugin
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/dist"
COMMAND ${CMAKE_COMMAND} -E copy "${RITHMIC_INCLUDE_DIR}/../etc/rithmic_ssl_cert_auth_params" "${CMAKE_BINARY_DIR}/bin/Release/"
COMMAND ${CMAKE_COMMAND} -E tar "cfv" "${CMAKE_BINARY_DIR}/dist/RithmicZorroPlugin64_${BUILD_VERSION}.zip" --format=zip "./"
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/bin/Release"
COMMENT "Creating zip archive 64bit"
)
endif()
endif()