Skip to content

Commit 5f1d5e8

Browse files
jen20James Nugent
authored andcommitted
Add MSGPACK_ENABLE_SHARED option, defaulting to ON
This allows building just static libraries using the CMake build, which is useful if your product is entirely statically linked. By default there is no change to the output - MSGPACK_ENABLE_SHARED must be explicitly set to false to disable building the shared library.
1 parent 1b13523 commit 5f1d5e8

File tree

1 file changed

+21
-8
lines changed

1 file changed

+21
-8
lines changed

CMakeLists.txt

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ IF (GTEST_FOUND AND ZLIB_FOUND AND THREADS_FOUND)
5353
ENDIF ()
5454

5555
OPTION (MSGPACK_ENABLE_CXX "Enable C++ interface." ON)
56+
OPTION (MSGPACK_ENABLE_SHARED "Build shared libaries in addition to static libraries." ON)
5657

5758
INCLUDE (CheckCXXSourceCompiles)
5859
CHECK_CXX_SOURCE_COMPILES ("
@@ -177,19 +178,23 @@ INCLUDE_DIRECTORIES (
177178
${MSGPACK_BOOST_DIR}
178179
)
179180

180-
ADD_LIBRARY (msgpack SHARED
181-
${msgpack_SOURCES}
182-
${msgpack_HEADERS}
183-
)
181+
IF (MSGPACK_ENABLE_SHARED)
182+
ADD_LIBRARY (msgpack SHARED
183+
${msgpack_SOURCES}
184+
${msgpack_HEADERS}
185+
)
186+
ENDIF ()
184187

185188
ADD_LIBRARY (msgpack-static STATIC
186189
${msgpack_SOURCES}
187190
${msgpack_HEADERS}
188191
)
189192

190193
SET_TARGET_PROPERTIES (msgpack-static PROPERTIES OUTPUT_NAME "msgpack")
191-
SET_TARGET_PROPERTIES (msgpack PROPERTIES IMPORT_SUFFIX "_import.lib")
192-
SET_TARGET_PROPERTIES (msgpack PROPERTIES SOVERSION 3 VERSION 4.0.0)
194+
IF (MSGPACK_ENABLE_SHARED)
195+
SET_TARGET_PROPERTIES (msgpack PROPERTIES IMPORT_SUFFIX "_import.lib")
196+
SET_TARGET_PROPERTIES (msgpack PROPERTIES SOVERSION 3 VERSION 4.0.0)
197+
ENDIF ()
193198

194199
IF (MSGPACK_BUILD_TESTS)
195200
ENABLE_TESTING ()
@@ -201,7 +206,9 @@ IF (MSGPACK_BUILD_TESTS)
201206
ENDIF ()
202207

203208
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
204-
SET_PROPERTY (TARGET msgpack APPEND_STRING PROPERTY COMPILE_FLAGS "-Wall -Wextra -Werror -g -O3 -DPIC")
209+
IF (MSGPACK_ENABLE_SHARED)
210+
SET_PROPERTY (TARGET msgpack APPEND_STRING PROPERTY COMPILE_FLAGS "-Wall -Wextra -Werror -g -O3 -DPIC")
211+
ENDIF ()
205212
SET_PROPERTY (TARGET msgpack-static APPEND_STRING PROPERTY COMPILE_FLAGS "-Wall -Wextra -Werror -g -O3" )
206213
ENDIF ()
207214
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
@@ -220,7 +227,13 @@ IF (NOT DEFINED CMAKE_INSTALL_LIBDIR)
220227
SET(CMAKE_INSTALL_LIBDIR lib)
221228
ENDIF ()
222229

223-
INSTALL (TARGETS msgpack msgpack-static DESTINATION ${CMAKE_INSTALL_LIBDIR})
230+
IF (MSGPACK_ENABLE_SHARED)
231+
SET (MSGPACK_INSTALLTARGETS msgpack msgpack-static)
232+
ELSE()
233+
SET (MSGPACK_INSTALLTARGETS msgpack-static)
234+
ENDIF ()
235+
236+
INSTALL (TARGETS ${MSGPACK_INSTALLTARGETS} DESTINATION ${CMAKE_INSTALL_LIBDIR})
224237
INSTALL (DIRECTORY include DESTINATION ${CMAKE_INSTALL_PREFIX})
225238
INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR}/msgpack.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
226239

0 commit comments

Comments
 (0)