Skip to content

Commit 201164a

Browse files
committed
update CMakeLists.txt
1 parent 4924345 commit 201164a

File tree

3 files changed

+84
-120
lines changed

3 files changed

+84
-120
lines changed

CMakeLists.txt

Lines changed: 35 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,89 +1,60 @@
1-
cmake_minimum_required(VERSION 3.0)
2-
1+
cmake_minimum_required(VERSION 3.6)
32
set(CMAKE_CXX_STANDARD 11)
4-
53
project(DolphinDBAPI)
64

5+
set(LINK_LIBS)
6+
if(USE_OPENSSL)
7+
add_definitions("-DUSE_OPENSSL=1")
8+
if(OPENSSL_PATH)
9+
set(ENV{OPENSSL_ROOT_DIR} ${OPENSSL_PATH})
10+
endif()
11+
find_package(OpenSSL REQUIRED)
12+
list(APPEND LINK_LIBS ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY})
13+
include_directories(${OPENSSL_INCLUDE_DIR})
14+
message("openssl include dir : ${OPENSSL_INCLUDE_DIR}")
15+
message("openssl ssl lib dir : ${OPENSSL_SSL_LIBRARY}")
16+
message("openssl crypto lib dir : ${OPENSSL_CRYPTO_LIBRARY}")
17+
endif()
18+
719
if(UNIX)
8-
add_definitions(-fPIC -DNDEBUG -O3 -Wall -fmessage-length=0 -std=gnu++11 -msse -msse2 -msse3 -funroll-loops)
9-
add_definitions("-DLINUX")
20+
add_definitions(-fPIC -DNDEBUG -DLINUX -O3 -Wall -fmessage-length=0 -std=gnu++11 -msse -msse2 -msse3 -funroll-loops)
1021
if(ABI EQUAL 0)
1122
message("set _GLIBCXX_USE_CXX11_ABI to 0")
1223
add_definitions("-D_GLIBCXX_USE_CXX11_ABI=0")
1324
elseif(ABI EQUAL 1)
1425
message("set _GLIBCXX_USE_CXX11_ABI to 1")
1526
add_definitions("-D_GLIBCXX_USE_CXX11_ABI=1")
1627
endif()
17-
if(SSL_LIBS)
18-
include_directories(${SSL_LIBS}/include)
19-
set(LIBSSL "-Wl,--whole-archive ${SSL_LIBS}/lib/libssl.a -Wl,--no-whole-archive")
20-
set(LIBCRYPTO "-Wl,--whole-archive ${SSL_LIBS}/lib/libcrypto.a -Wl,--no-whole-archive")
21-
else()
22-
set(LIBSSL ssl)
23-
set(LIBCRYPTO crypto)
24-
endif()
25-
26-
if(UUID_LIBS)
27-
include_directories(${UUID_LIBS}/include)
28-
set(LIBUUID "-Wl,--whole-archive ${UUID_LIBS}/lib/libuuid.a -Wl,--no-whole-archive")
29-
else()
30-
set(LIBUUID uuid)
28+
if(UUID_PATH)
29+
include_directories(${UUID_PATH}/include)
30+
link_directories(${UUID_PATH}/lib)
3131
endif()
32-
32+
list(APPEND LINK_LIBS pthread uuid dl)
3333
elseif(WIN32)
34-
if(MSVC)
35-
message("MSVC Compiling")
36-
add_definitions("-DWINDOWS -DWIN32_LEAN_AND_MEAN -D_DDBAPIDLL -DNOMINMAX")
37-
if(SSL_LIBS)
38-
include_directories(${SSL_LIBS}/include64)
39-
set(LIBSSL ${SSL_LIBS}/lib64/ssleay32MD.lib)
40-
set(LIBCRYPTO ${SSL_LIBS}/lib64/libeay32MD.lib)
41-
else()
42-
set(LIBSSL ssleay32MD.lib)
43-
set(LIBCRYPTO libeay32MD.lib)
44-
endif()
45-
elseif(MINGW)
46-
message("MINGW Compiling")
47-
add_definitions(-fPIC -DNDEBUG -O3 -Wall -fmessage-length=0 -std=gnu++11 -msse -msse2 -msse3 -funroll-loops)
48-
add_definitions("-DWINDOWS -D_WIN32_WINNT=0x0600")
34+
if(MSVC)
35+
message("MSVC Compiling")
36+
add_definitions("-DWINDOWS -DWIN32_LEAN_AND_MEAN -D_DDBAPIDLL -DNOMINMAX")
37+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MDd")
38+
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd")
39+
elseif(MINGW)
40+
message("MINGW Compiling")
41+
add_definitions(-fPIC -DNDEBUG -O3 -Wall -fmessage-length=0 -std=gnu++11 -msse -msse2 -msse3 -funroll-loops)
42+
add_definitions("-DWINDOWS -D_WIN32_WINNT=0x0600")
4943
if(ABI EQUAL 0)
5044
message("set _GLIBCXX_USE_CXX11_ABI to 0")
5145
add_definitions("-D_GLIBCXX_USE_CXX11_ABI=0")
5246
elseif(ABI EQUAL 1)
5347
message("set _GLIBCXX_USE_CXX11_ABI to 1")
5448
add_definitions("-D_GLIBCXX_USE_CXX11_ABI=1")
5549
endif()
56-
if(SSL_LIBS)
57-
include_directories(${SSL_LIBS}/include)
58-
set(LIBSSL ${SSL_LIBS}/lib/libssl.a)
59-
set(LIBCRYPTO ${SSL_LIBS}/lib/libcrypto.a)
60-
else()
61-
set(LIBSSL ssl)
62-
set(LIBCRYPTO crypto)
63-
endif()
64-
endif()
65-
66-
50+
endif()
51+
list(APPEND LINK_LIBS ws2_32)
6752
endif()
6853

6954
AUX_SOURCE_DIRECTORY(src DIR_SRCS)
7055
include_directories(include)
7156
ADD_LIBRARY(DolphinDBAPI SHARED ${DIR_SRCS})
72-
73-
if(UNIX)
74-
target_link_libraries(
75-
DolphinDBAPI
76-
pthread
77-
${LIBSSL}
78-
${LIBCRYPTO}
79-
${LIBUUID}
80-
dl
81-
)
82-
elseif(WIN32)
83-
target_link_libraries(
84-
DolphinDBAPI
85-
${LIBSSL}
86-
${LIBCRYPTO}
87-
ws2_32
88-
)
89-
endif()
57+
target_link_libraries(
58+
DolphinDBAPI
59+
${LINK_LIBS}
60+
)

demo/CMakeLists.txt

Lines changed: 45 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,57 @@
1-
cmake_minimum_required(VERSION 3.4.1)
1+
cmake_minimum_required(VERSION 3.6)
22
set(ProjectName apiDemo)
3-
43
project(${ProjectName})
5-
64
set(SRC_LIST
7-
${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp
5+
${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp
86
)
7+
set(LINK_LIBS)
8+
if(USE_OPENSSL)
9+
add_definitions("-DUSE_OPENSSL=1")
10+
if(OPENSSL_PATH)
11+
set(ENV{OPENSSL_ROOT_DIR} ${OPENSSL_PATH})
12+
endif()
13+
find_package(OpenSSL REQUIRED)
14+
include_directories(${OPENSSL_INCLUDE_DIR})
15+
message("openssl include dir : ${OPENSSL_INCLUDE_DIR}")
16+
message("openssl ssl lib dir : ${OPENSSL_SSL_LIBRARY}")
17+
message("openssl crypto lib dir : ${OPENSSL_CRYPTO_LIBRARY}")
18+
endif()
919
if(UNIX)
10-
add_compile_options(-std=c++11 -DLINUX -Wall -O0 -g -fPIC -Wl,-rpath,${CMAKE_CURRENT_SOURCE_DIR}:${CMAKE_CURRENT_SOURCE_DIR}/lib)
11-
if(ABI EQUAL 0)
12-
message("set _GLIBCXX_USE_CXX11_ABI to 0")
13-
add_definitions("-D_GLIBCXX_USE_CXX11_ABI=0")
14-
elseif(ABI EQUAL 1)
15-
message("set _GLIBCXX_USE_CXX11_ABI to 1")
16-
add_definitions("-D_GLIBCXX_USE_CXX11_ABI=1")
17-
endif()
20+
add_compile_options(-std=c++11 -DLINUX -Wall -O0 -g -fPIC -Wl,-rpath,${CMAKE_CURRENT_SOURCE_DIR}:${CMAKE_CURRENT_SOURCE_DIR}/lib)
21+
if(ABI EQUAL 0)
22+
message("set _GLIBCXX_USE_CXX11_ABI to 0")
23+
add_definitions("-D_GLIBCXX_USE_CXX11_ABI=0")
24+
elseif(ABI EQUAL 1)
25+
message("set _GLIBCXX_USE_CXX11_ABI to 1")
26+
add_definitions("-D_GLIBCXX_USE_CXX11_ABI=1")
27+
endif()
28+
list(APPEND LINK_LIBS DolphinDBAPI rt pthread)
1829
elseif(WIN32)
19-
if(MSVC)
20-
add_compile_options(-DWINDOWS -DNOMINMAX -D_DEBUG)
21-
include_directories(
22-
${SSL_LIBS}/include64
23-
)
24-
elseif(MINGW)
25-
add_compile_options(-std=c++11 -DWINDOWS -Wall -O0 -g -fPIC -Wl,-rpath,${CMAKE_CURRENT_SOURCE_DIR}:${CMAKE_CURRENT_SOURCE_DIR}/lib)
26-
if(ABI EQUAL 0)
27-
message("set _GLIBCXX_USE_CXX11_ABI to 0")
28-
add_definitions("-D_GLIBCXX_USE_CXX11_ABI=0")
29-
elseif(ABI EQUAL 1)
30-
message("set _GLIBCXX_USE_CXX11_ABI to 1")
31-
add_definitions("-D_GLIBCXX_USE_CXX11_ABI=1")
32-
endif()
33-
endif()
30+
if(MSVC)
31+
add_compile_options(-DWINDOWS -DNOMINMAX -D_DEBUG)
32+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MDd")
33+
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd")
34+
list(APPEND LINK_LIBS DolphinDBAPI)
35+
elseif(MINGW)
36+
add_compile_options(-std=c++11 -DWINDOWS -Wall -O0 -g -fPIC -Wl,-rpath,${CMAKE_CURRENT_SOURCE_DIR}:${CMAKE_CURRENT_SOURCE_DIR}/lib)
37+
if(ABI EQUAL 0)
38+
message("set _GLIBCXX_USE_CXX11_ABI to 0")
39+
add_definitions("-D_GLIBCXX_USE_CXX11_ABI=0")
40+
elseif(ABI EQUAL 1)
41+
message("set _GLIBCXX_USE_CXX11_ABI to 1")
42+
add_definitions("-D_GLIBCXX_USE_CXX11_ABI=1")
43+
endif()
44+
list(APPEND LINK_LIBS DolphinDBAPI pthread)
45+
endif()
3446
endif()
35-
3647
include_directories(
37-
${CMAKE_CURRENT_SOURCE_DIR}/../include
48+
${CMAKE_CURRENT_SOURCE_DIR}/../include
3849
)
3950
link_directories(
40-
${CMAKE_CURRENT_SOURCE_DIR}/lib/
51+
${CMAKE_CURRENT_SOURCE_DIR}/lib/
4152
)
4253
add_executable(${ProjectName} ${SRC_LIST})
43-
44-
if(UNIX)
45-
target_link_libraries(${ProjectName}
46-
DolphinDBAPI
47-
rt
48-
pthread
49-
)
50-
elseif(WIN32)
51-
if(MSVC)
52-
target_link_libraries(${ProjectName}
53-
DolphinDBAPI
54-
)
55-
elseif(MINGW)
56-
target_link_libraries(${ProjectName}
57-
DolphinDBAPI
58-
pthread
59-
)
60-
endif()
61-
endif()
62-
63-
64-
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/bin/)
54+
target_link_libraries(${ProjectName}
55+
${LINK_LIBS}
56+
)
57+
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/bin/)

demo/README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
1. 解压demo.zip到src目录下
22
2. 将编译好的C++ API动态库拷贝到demo/lib目录下
3-
3. 执行下面的命令,以Visual Studio 2022为例,其中用SSL_LIBS参数指定openssl库位置
3+
3. 执行下面的命令,以Visual Studio 2022为例
44
cd api-cplusplus/demo
55
mkdir build && cd build
6-
cmake .. -G "Visual Studio 17 2022" -A x64 -DSSL_LIBS=D:/openssl-1.0.2l-vs2017
7-
cmake --build .
6+
cmake .. -G "Visual Studio 17 2022" -A x64 -DUSE_OPENSSL=1 -DOPENSSL_PATH=D:/temp/openssl-1.0.2l-vs2017 -DCMAKE_CONFIGURATION_TYPES="Release;Debug"
7+
cmake --build . --config Release
88
4. 生成的可执行文件apiDemo.exe在demo\bin\Debug目录下
99
5. 将所依赖的动态库(DolphinDBAPI.dll libeay32MD.dll ssleay32MD.dll)拷贝到该目录下即可执行
10-
6. 这个demo同样支持mingw以及Linux,只是cmake语句略有不同
10+
6. 这个demo同样支持mingw以及Linux,只是cmake语句略有不同,具体请参考说明文档中的编译章节

0 commit comments

Comments
 (0)