Skip to content

Commit fd6a7ff

Browse files
author
JiaWen Li
committed
Merge branch 'dev' into 'master'
dev-master See merge request server/openapi/openapi-cpp-sdk!41
2 parents abe7ccc + 40904b5 commit fd6a7ff

File tree

525 files changed

+263733
-350
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

525 files changed

+263733
-350
lines changed

CMakeLists.txt

Lines changed: 47 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -19,23 +19,35 @@ if(UNIX) # Darwing or Linux
1919

2020
find_package(Boost REQUIRED COMPONENTS system thread log program_options chrono)
2121
find_package(Threads REQUIRED)
22+
find_package(absl REQUIRED)
2223

2324
# cpprest
2425
find_path(CPPREST_INCLUDE_DIR NAMES cpprest/http_client.h cpprest/http_msg.h)
2526
find_library(CPPREST_LIBRARY NAMES cpprest)
2627
message(CPPREST_INCLUDE_DIR " ${CPPREST_INCLUDE_DIR}")
2728
message(CPPREST_LIBRARY " ${CPPREST_LIBRARY}")
28-
29-
29+
30+
set(Protobuf_INCLUDE_DIR "/usr/local/opt/protobuf/include")
31+
set(Protobuf_LIBRARY "/usr/local/opt/protobuf/lib/libprotobuf.dylib")
32+
set(Protobuf_PROTOC_LIBRARY "/usr/local/opt/protobuf/lib/libprotoc.dylib")
33+
set(Protobuf_PROTOC_EXECUTABLE "/usr/local/opt/protobuf/bin/protoc")
34+
35+
# 查找 Protobuf 包
36+
find_package(Protobuf REQUIRED)
37+
message(STATUS "Protobuf version: ${Protobuf_VERSION}")
38+
message(STATUS "Protobuf include dir: ${Protobuf_INCLUDE_DIR}")
39+
message(STATUS "Protobuf libraries: ${Protobuf_LIBRARY}")
3040

3141
if(APPLE)
32-
# Prefer a homebrew version of OpenSSL over the one in /usr/lib
3342
# file(GLOB OPENSSL_ROOT_DIR /usr/local/Cellar/openssl*/*)
3443
file(GLOB OPENSSL_ROOT_DIR /usr/local/opt/openssl/* /opt/homebrew/Cellar/openssl@3/*)
3544
# Prefer the latest (make the latest one first)
3645
list(REVERSE OPENSSL_ROOT_DIR)
3746

3847
find_package(OpenSSL REQUIRED)
48+
message(OPENSSL_ROOT_DIR " ${OPENSSL_ROOT_DIR}")
49+
message(OPENSSL_LIBRARIES " ${OPENSSL_LIBRARIES}")
50+
3951
# set(OPENSSL_VERSION "1.1.1q")
4052

4153
set(ZLIB_LIBRARY /opt/homebrew/Cellar/zlib/1.2.13/lib/libz.dylib )
@@ -57,7 +69,7 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
5769

5870
message("-- configuring clang options")
5971
# set(CMAKE_CXX_FLAGS "-arch x86_64 -std=c++11 -stdlib=libc++ -DBOOST_LOG_DYN_LINK -Wno-deprecated-declarations")
60-
set(CMAKE_CXX_FLAGS "-arch arm64 -std=c++11 -stdlib=libc++ -DBOOST_LOG_DYN_LINK -Wno-deprecated-declarations")
72+
set(CMAKE_CXX_FLAGS "-arch arm64 -std=c++14 -stdlib=libc++ -DBOOST_LOG_DYN_LINK -Wno-deprecated-declarations")
6173

6274
elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
6375

@@ -69,29 +81,24 @@ endif()
6981

7082
# Project construction ...
7183
# src files ...
72-
file(GLOB MY_SOURCE_FILES "include/cpprest/*.h" "include/cpprest/details/*.h")
73-
add_library(${PROJECT_NAME}
74-
src/tiger_client.cpp include/tigerapi/tiger_client.h include/tigerapi/constants.h
75-
include/tigerapi/utils.h src/utils.cpp include/tigerapi/service_types.h include/tigerapi/quote_client.h
76-
src/quote_client.cpp src/trade_client.cpp include/tigerapi/model.h src/order_util.cpp
77-
include/tigerapi/order_util.h src/contract_util.cpp include/tigerapi/contract_util.h
78-
include/tigerapi/client_config.h include/tigerapi/sign_util.h
79-
include/tigerapi/easylogging++.h cpprest/ src/easylogging++.cc ${MY_SOURCE_FILES})
84+
file(GLOB MY_SOURCE_FILES "include/cpprest/*.h" "include/cpprest/details/*.h" "include/openapi_pb/pb_source/*.*"
85+
"include/tigerapi/push_socket/*.h" "include/tigerapi/*.h" "src/*.cpp" "src/push_socket/*.cpp")
86+
add_library(${PROJECT_NAME} cpprest/ ${MY_SOURCE_FILES})
87+
message(MY_SOURCE_FILES " ${MY_SOURCE_FILES}")
88+
# 确保生成动态库
89+
set_target_properties(${PROJECT_NAME} PROPERTIES
90+
SOVERSION ${PROJECT_VERSION}
91+
VERSION ${PROJECT_VERSION}
92+
)
8093

8194
# headers search paths ...
8295
#set(HEADER_SEARCH_PATHS ${CPPREST_INCLUDE_DIR} ${Boost_INCLUDE_DIR} ${OPENSSL_INCLUDE_DIR})
83-
set(HEADER_SEARCH_PATHS ${Boost_INCLUDE_DIR} ${OPENSSL_INCLUDE_DIR})
96+
set(HEADER_SEARCH_PATHS ${Boost_INCLUDE_DIR} ${OPENSSL_INCLUDE_DIR} ${PROTOBUF_INCLUDE_DIR})
8497

85-
# library search paths ...
86-
if(APPLE)
87-
set(OPENSSL_LIBS "${OPENSSL_LIBRARIES}")
88-
# set(ZIP_LIBRARY ZLIB::ZLIB)
8998

90-
set(LIBRARIES_SEARCH_PATHS ${OPENSSL_LIBS} ${Boost_LIBRARIES} ${CPPREST_LIBRARY} ${ZIP_LIBRARY})
91-
else()
92-
set(OPENSSL_LIBS "${OPENSSL_LIBRARIES}")
93-
set(LIBRARIES_SEARCH_PATHS ${CPPREST_LIBRARY} ${OPENSSL_LIBS} ${Boost_LIBRARIES} ${ZIP_LIBRARY})
94-
endif()
99+
set(OPENSSL_LIBS "${OPENSSL_LIBRARIES}")
100+
set(LIBRARIES_SEARCH_PATHS ${OPENSSL_LIBS} ${Boost_LIBRARIES} ${CPPREST_LIBRARY} ${ZIP_LIBRARY} ${Protobuf_LIBRARY} ${Protobuf_PROTOC_LIBRARY})
101+
95102

96103
message(BOOST_LIBS " ${Boost_LIBRARIES}")
97104
message(OPENSSL_LIBS " ${OPENSSL_LIBRARIES}")
@@ -101,22 +108,32 @@ message(LIBRARIES_SEARCH_PATHS " ${LIBRARIES_SEARCH_PATHS}")
101108

102109
include_directories(${HEADER_SEARCH_PATHS})
103110
if (APPLE)
104-
target_link_libraries(${PROJECT_NAME} "-framework CoreFoundation")
105-
target_link_libraries(${PROJECT_NAME} "-framework Security")
106-
target_link_libraries(${PROJECT_NAME} ${LIBRARIES_SEARCH_PATHS})
107-
set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS "-W1, -F/Library/Frameworks ")
111+
target_link_libraries(${PROJECT_NAME} PRIVATE
112+
"-framework CoreFoundation"
113+
"-framework Security"
114+
${LIBRARIES_SEARCH_PATHS}
115+
absl::base
116+
absl::utility
117+
)
118+
set_target_properties(${PROJECT_NAME} PROPERTIES
119+
LINK_FLAGS "-W1, -F/Library/Frameworks"
120+
)
108121
else()
109-
target_link_libraries(${PROJECT_NAME} ${LIBRARIES_SEARCH_PATHS})
110-
target_link_libraries(${PROJECT_NAME} OpenSSL::SSL OpenSSL::Crypto)
111-
122+
target_link_libraries(${PROJECT_NAME} PRIVATE
123+
${LIBRARIES_SEARCH_PATHS}
124+
OpenSSL::SSL
125+
OpenSSL::Crypto
126+
)
112127
endif()
113128

114129

115130

116131

117132
install(DIRECTORY include/
118133
DESTINATION "include"
119-
FILES_MATCHING PATTERN "*.h"
134+
FILES_MATCHING
135+
PATTERN "*.h"
136+
# PATTERN "*.cc"
120137
)
121138

122139
install(TARGETS ${PROJECT_NAME}

README.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
# 编译步骤
2+
## 环境要求
3+
- Linux/Mac: GCC/Clang, CMake 3.0+
4+
- Windows: Visual Studio 2015+, vcpkg
5+
6+
27

38
## Linux/Mac
49

@@ -47,6 +52,24 @@ make install
4752
[参考文档](https://github.com/Microsoft/cpprestsdk/wiki/Getting-Started-Tutorial)
4853
直接通过包管理软件安装的 cpprestsdk 可能不是最新版本, 可能会有未知问题
4954
55+
### 编译安装 protobuf
56+
使用 v3.1.0 版本
57+
```
58+
cd /tmp # 选择暂存源码的目录,此处用 /tmp,也可根据本机环境指定其他系统路径
59+
git clone https://github.com/protocolbuffers/protobuf
60+
cd protobuf
61+
git checkout v3.1.0
62+
mkdir cmake_build
63+
cd cmake_build
64+
cmake ../cmake \
65+
-DCMAKE_BUILD_TYPE=Release \
66+
-DCMAKE_INSTALL_PREFIX=/usr/local/opt/protobuf \
67+
-Dprotobuf_BUILD_TESTS=OFF \
68+
-Dprotobuf_BUILD_SHARED_LIBS=ON
69+
make -j 8
70+
make install
71+
```
72+
5073
### 编译 tigerapi sdk
5174
若使用编译好的sdk,此步骤可跳过
5275
准备工作:根据系统环境调整 CMakeLists.txt 的相关路径
@@ -99,6 +122,18 @@ vcpkg install openssl
99122
```
100123
PS> vcpkg install cpprestsdk cpprestsdk:x64-windows
101124
```
125+
### 编译protobuf
126+
git clone https://github.com/protocolbuffers/protobuf
127+
```
128+
git checkout v3.1.0
129+
130+
使用cmake-gui生成windows解决方案
131+
```
132+
解决方案中选择“libprotobuf”工程生成pb依赖库,代码生成配置为/MDd和/MD,
133+
解决方案下创建lib目录,按需依次创建其他层级为:lib/x86/Debug、lib/x86/Release、lib/x64/Debug、lib/x64/Release
134+
将pb解决方案编译好的lib库依次拷贝到对应的层级目录,Debug:libprotobufd.lib,Release:libprotobuf.lib
135+
```
136+
```
102137
103138
### 安装 tigerapi sdk
104139
源码output里的dll或lib为sdk编译后的库,项目配置引入后即可调用sdk

changlog.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 1.0.0 (2024-11-28)
2+
### New
3+
- 支持长连接推送
4+
15
## 0.1.6 (2024-03-08)
26
### New
37
- 新增根据ticksize调整下单价格的工具 PriceUtil

demo/CMakeLists.txt

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,30 @@ if(UNIX) # Darwing or Linux
1717
message(CPPREST_LIBRARY " ${CPPREST_LIBRARY}")
1818

1919
# tigerapi
20-
find_path(TIGERAPI_INCLUDE_DIR NAMES common/easylogging++.h tigerapi/client_config.h )
20+
find_path(TIGERAPI_INCLUDE_DIR NAMES tigerapi/easylogging++.h tigerapi/client_config.h )
21+
message(TIGERAPI_INCLUDE_DIR " ${TIGERAPI_INCLUDE_DIR}")
2122
find_library(TIGERAPI_LIBRARY NAMES libtigerapi.a)
2223

24+
# 可使用系统库或sdk output中的库
25+
set(Protobuf_INCLUDE_DIR "/usr/local/opt/protobuf/include")
26+
set(Protobuf_LIBRARY "/usr/local/opt/protobuf/lib/libprotobuf.dylib")
27+
# find_path(Protobuf_INCLUDE_DIR NAMES google/protobuf/service.h)
28+
# find_library(Protobuf_LIBRARY NAMES protobuf)
29+
message(STATUS "Protobuf version: ${Protobuf_VERSION}")
30+
message(STATUS "Protobuf include dir: ${Protobuf_INCLUDE_DIR}")
31+
message(STATUS "Protobuf libraries: ${Protobuf_LIBRARY}")
32+
33+
2334
if(APPLE)
24-
# Prefer a homebrew version of OpenSSL over the one in /usr/lib
35+
# set(CMAKE_OSX_DEPLOYMENT_TARGET "13.7")
2536
# file(GLOB OPENSSL_ROOT_DIR /usr/local/Cellar/openssl*/*)
2637
file(GLOB OPENSSL_ROOT_DIR /usr/local/opt/openssl/* /opt/homebrew/Cellar/openssl@3/*)
2738
# Prefer the latest (make the latest one first)
2839
list(REVERSE OPENSSL_ROOT_DIR)
2940

3041
find_package(OpenSSL REQUIRED)
31-
# set(OPENSSL_VERSION "1.1.1q")
32-
33-
42+
message(OPENSSL_ROOT_DIR " ${OPENSSL_ROOT_DIR}")
43+
message(OPENSSL_LIBRARIES " ${OPENSSL_LIBRARIES}")
3444
else()
3545
find_package(OpenSSL 1.0.1 REQUIRED)
3646
set(OPENSSL_VERSION "1.0.1")
@@ -48,7 +58,6 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
4858
message("-- configuring clang options")
4959
# set(CMAKE_CXX_FLAGS "-arch x86_64 -std=c++11 -stdlib=libc++ -DBOOST_LOG_DYN_LINK -Wno-deprecated-declarations")
5060
set(CMAKE_CXX_FLAGS "-arch arm64 -std=c++11 -stdlib=libc++ -DBOOST_LOG_DYN_LINK -Wno-deprecated-declarations")
51-
5261
elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
5362

5463
message("-- configuring gcc options")
@@ -61,16 +70,16 @@ endif()
6170
add_executable(${PROJECT_NAME} openapi_cpp_test/openapi_cpp_test.cpp)
6271

6372
# headers search paths ...
64-
set(HEADER_SEARCH_PATHS ${CPPREST_INCLUDE_DIR} ${Boost_INCLUDE_DIR} ${OPENSSL_INCLUDE_DIR} ${TIGERAPI_INCLUDE_DIR})
73+
set(HEADER_SEARCH_PATHS ${CPPREST_INCLUDE_DIR} ${Boost_INCLUDE_DIR} ${OPENSSL_INCLUDE_DIR} ${TIGERAPI_INCLUDE_DIR} ${Protobuf_INCLUDE_DIR})
6574

6675
# library search paths ...
6776
if(APPLE)
6877
set(OPENSSL_LIBS "${OPENSSL_LIBRARIES}")
6978
# set(ZIP_LIBRARY "/usr/local/Cellar/zlib/1.2.12/lib/libz.dylib")
70-
set(LIBRARIES_SEARCH_PATHS ${OPENSSL_LIBS} ${Boost_LIBRARIES} ${ZIP_LIBRARY} ${CPPREST_LIBRARY} ${TIGERAPI_LIBRARY})
79+
set(LIBRARIES_SEARCH_PATHS ${OPENSSL_LIBS} ${Boost_LIBRARIES} ${ZIP_LIBRARY} ${CPPREST_LIBRARY} ${TIGERAPI_LIBRARY} ${Protobuf_LIBRARY} )
7180
else()
7281
set(OPENSSL_LIBS "${OPENSSL_LIBRARIES}")
73-
set(LIBRARIES_SEARCH_PATHS ${OPENSSL_LIBS} ${Boost_LIBRARIES} ${ZIP_LIBRARY} ${CPPREST_LIBRARY} ${TIGERAPI_LIBRARY})
82+
set(LIBRARIES_SEARCH_PATHS ${OPENSSL_LIBS} ${Boost_LIBRARIES} ${ZIP_LIBRARY} ${CPPREST_LIBRARY} ${TIGERAPI_LIBRARY} ${Protobuf_LIBRARY} )
7483
endif()
7584

7685
message(LIBRARIES_SEARCH_PATHS " ${LIBRARIES_SEARCH_PATHS}")

0 commit comments

Comments
 (0)