Skip to content

Commit e2856dc

Browse files
committed
Separate building static and shared libs, use cmake BUILD_SHARED_LIBS
1 parent 68bf25c commit e2856dc

File tree

4 files changed

+22
-16
lines changed

4 files changed

+22
-16
lines changed

CMakeLists.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ INCLUDE (cmake/openssl.cmake)
66

77
OPTION (BUILD_BENCHMARK "Build benchmark" OFF)
88
OPTION (BUILD_TESTS "Build tests" OFF)
9+
OPTION (BUILD_SHARED_LIBS "Build shared libs" OFF)
910
OPTION (WITH_OPENSSL "Use OpenSSL for TLS connections" OFF)
1011

1112
PROJECT (CLICKHOUSE-CLIENT)
@@ -26,6 +27,12 @@ PROJECT (CLICKHOUSE-CLIENT)
2627
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Werror")
2728
ENDIF ()
2829

30+
IF (APPLE OR MSVC)
31+
IF(BUILD_SHARED_LIBS)
32+
MESSAGE(FATAL "Does not support shared on this platform")
33+
ENDIF()
34+
ENDIF()
35+
2936
INCLUDE_DIRECTORIES (.)
3037
INCLUDE_DIRECTORIES (contrib)
3138

clickhouse/CMakeLists.txt

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -36,20 +36,18 @@ IF (WITH_OPENSSL)
3636
LIST(APPEND clickhouse-cpp-lib-src base/sslsocket.cpp)
3737
ENDIF ()
3838

39-
ADD_LIBRARY (clickhouse-cpp-lib SHARED ${clickhouse-cpp-lib-src})
40-
SET_TARGET_PROPERTIES(clickhouse-cpp-lib PROPERTIES LINKER_LANGUAGE CXX)
39+
ADD_LIBRARY (clickhouse-cpp-lib ${clickhouse-cpp-lib-src})
40+
SET_TARGET_PROPERTIES (clickhouse-cpp-lib PROPERTIES LINKER_LANGUAGE CXX)
4141
TARGET_LINK_LIBRARIES (clickhouse-cpp-lib
4242
absl-lib
4343
cityhash-lib
4444
lz4-lib
4545
)
4646

47-
ADD_LIBRARY (clickhouse-cpp-lib-static STATIC ${clickhouse-cpp-lib-src})
48-
TARGET_LINK_LIBRARIES (clickhouse-cpp-lib-static
49-
absl-lib
50-
cityhash-lib
51-
lz4-lib
52-
)
47+
IF (NOT BUILD_SHARED_LIBS)
48+
ADD_LIBRARY (clickhouse-cpp-lib-static ALIAS clickhouse-cpp-lib)
49+
ENDIF()
50+
5351

5452
IF (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
5553
INCLUDE (CheckCXXSourceCompiles)
@@ -68,17 +66,20 @@ IF (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
6866
# /usr/bin/ld: CMakeFiles/simple-test.dir/main.cpp.o: undefined reference to symbol '_Unwind_Resume@@GCC_3.0'
6967
# /usr/bin/ld: /lib/x86_64-linux-gnu/libgcc_s.so.1: error adding symbols: DSO missing from command line
7068
# FIXME: that workaround breaks clang build on mingw
71-
TARGET_LINK_LIBRARIES (clickhouse-cpp-lib gcc_s)
72-
TARGET_LINK_LIBRARIES (clickhouse-cpp-lib-static gcc_s)
69+
IF (BUILD_SHARED_LIBS)
70+
TARGET_LINK_LIBRARIES (clickhouse-cpp-lib gcc_s)
71+
ELSE()
72+
TARGET_LINK_LIBRARIES (clickhouse-cpp-lib-static gcc_s)
73+
ENDIF()
7374
ENDIF ()
7475
ENDIF ()
7576

76-
INSTALL (TARGETS clickhouse-cpp-lib clickhouse-cpp-lib-static
77+
78+
INSTALL (TARGETS clickhouse-cpp-lib
7779
ARCHIVE DESTINATION lib
7880
LIBRARY DESTINATION lib
7981
)
8082

81-
8283
# general
8384
INSTALL(FILES block.h DESTINATION include/clickhouse/)
8485
INSTALL(FILES client.h DESTINATION include/clickhouse/)
@@ -124,10 +125,8 @@ INSTALL(FILES types/types.h DESTINATION include/clickhouse/types/)
124125

125126
IF (WITH_OPENSSL)
126127
TARGET_LINK_LIBRARIES (clickhouse-cpp-lib OpenSSL::SSL)
127-
TARGET_LINK_LIBRARIES (clickhouse-cpp-lib-static OpenSSL::SSL)
128128
ENDIF ()
129129

130130
IF (WIN32 OR MINGW)
131131
TARGET_LINK_LIBRARIES (clickhouse-cpp-lib wsock32 ws2_32)
132-
TARGET_LINK_LIBRARIES (clickhouse-cpp-lib-static wsock32 ws2_32)
133132
ENDIF ()

tests/simple/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ ADD_EXECUTABLE (simple-test
44
)
55

66
TARGET_LINK_LIBRARIES (simple-test
7-
clickhouse-cpp-lib-static
7+
clickhouse-cpp-lib
88
)
99

1010
IF (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")

ut/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ ADD_EXECUTABLE (clickhouse-cpp-ut
3535
)
3636

3737
TARGET_LINK_LIBRARIES (clickhouse-cpp-ut
38-
clickhouse-cpp-lib-static
38+
clickhouse-cpp-lib
3939
gtest-lib
4040
)
4141
IF (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")

0 commit comments

Comments
 (0)