Skip to content

Commit 6046d5c

Browse files
cmake: Remove alias from package config
The cmake target of an alias may not be an Imported Target. Always build the msgpackc target and only build the msgpackc-static target if both should be build to fix issue #801. Thereby the type (shared or static) of the msgpackc target depends on the build configuration.
1 parent 83eb70d commit 6046d5c

File tree

3 files changed

+14
-29
lines changed

3 files changed

+14
-29
lines changed

CMakeLists.txt

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ ELSE ()
181181
IF (NOT DEFINED MSGPACK_ENABLE_STATIC)
182182
SET (MSGPACK_ENABLE_STATIC ON)
183183
ENDIF ()
184+
SET (BUILD_SHARED_LIBS ${MSGPACK_ENABLE_SHARED})
184185
ENDIF ()
185186

186187
OPTION (MSGPACK_ENABLE_CXX "Enable C++ interface." ON)
@@ -209,8 +210,9 @@ CONFIGURE_FILE (
209210
@ONLY
210211
)
211212

212-
IF (MSGPACK_ENABLE_SHARED)
213-
ADD_LIBRARY (msgpackc SHARED
213+
214+
IF (MSGPACK_ENABLE_SHARED OR MSGPACK_ENABLE_STATIC)
215+
ADD_LIBRARY (msgpackc
214216
${msgpackc_SOURCES}
215217
${msgpackc_HEADERS}
216218
)
@@ -238,7 +240,7 @@ IF (MSGPACK_ENABLE_CXX AND ((CMAKE_VERSION VERSION_GREATER 3.0) OR (CMAKE_VERSIO
238240
)
239241
ENDIF ()
240242

241-
IF (MSGPACK_ENABLE_STATIC)
243+
IF (MSGPACK_ENABLE_SHARED AND MSGPACK_ENABLE_STATIC)
242244
ADD_LIBRARY (msgpackc-static STATIC
243245
${msgpackc_SOURCES}
244246
${msgpackc_HEADERS}
@@ -253,11 +255,6 @@ IF (MSGPACK_ENABLE_STATIC)
253255
${CMAKE_CURRENT_SOURCE_DIR}
254256
)
255257

256-
IF (NOT MSGPACK_ENABLE_SHARED)
257-
# Add alias for subdirectories
258-
ADD_LIBRARY (msgpackc ALIAS msgpackc-static)
259-
ENDIF ()
260-
261258
SET_TARGET_PROPERTIES (msgpackc-static PROPERTIES OUTPUT_NAME "msgpackc")
262259

263260
IF (MSGPACK_ENABLE_SHARED)
@@ -291,19 +288,19 @@ IF (MSGPACK_BUILD_TESTS)
291288
ENDIF ()
292289

293290
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
294-
IF (MSGPACK_ENABLE_SHARED)
291+
IF (MSGPACK_ENABLE_SHARED OR MSGPACK_ENABLE_STATIC)
295292
SET_PROPERTY (TARGET msgpackc APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra -DPIC")
296293
ENDIF ()
297-
IF (MSGPACK_ENABLE_STATIC)
294+
IF (MSGPACK_ENABLE_SHARED AND MSGPACK_ENABLE_STATIC)
298295
SET_PROPERTY (TARGET msgpackc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra" )
299296
ENDIF ()
300297
ENDIF ()
301298

302299
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
303-
IF (MSGPACK_ENABLE_SHARED)
300+
IF (MSGPACK_ENABLE_SHARED OR MSGPACK_ENABLE_STATIC)
304301
SET_PROPERTY (TARGET msgpackc APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-mismatched-tags")
305302
ENDIF ()
306-
IF (MSGPACK_ENABLE_STATIC)
303+
IF (MSGPACK_ENABLE_SHARED AND MSGPACK_ENABLE_STATIC)
307304
SET_PROPERTY (TARGET msgpackc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-mismatched-tags")
308305
ENDIF ()
309306
ENDIF ()
@@ -337,15 +334,15 @@ IF (MSGPACK_BUILD_EXAMPLES)
337334
ADD_SUBDIRECTORY (example)
338335
ENDIF ()
339336

340-
IF (MSGPACK_ENABLE_SHARED)
337+
IF (MSGPACK_ENABLE_SHARED OR MSGPACK_ENABLE_STATIC)
341338
SET (MSGPACK_INSTALLTARGETS msgpackc)
342339
ENDIF ()
343340

344341
IF (MSGPACK_ENABLE_CXX AND ((CMAKE_VERSION VERSION_GREATER 3.0) OR (CMAKE_VERSION VERSION_EQUAL 3.0)))
345342
LIST (APPEND MSGPACK_INSTALLTARGETS msgpackc-cxx)
346343
ENDIF ()
347344

348-
IF (MSGPACK_ENABLE_STATIC)
345+
IF (MSGPACK_ENABLE_SHARED AND MSGPACK_ENABLE_STATIC)
349346
LIST (APPEND MSGPACK_INSTALLTARGETS msgpackc-static)
350347
ENDIF ()
351348

example/c/CMakeLists.txt

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,3 @@
1-
IF (MSGPACK_ENABLE_SHARED)
2-
SET (MSGPACK_LIB msgpackc)
3-
ENDIF ()
4-
5-
IF (MSGPACK_ENABLE_STATIC)
6-
SET (MSGPACK_LIB msgpackc-static)
7-
ENDIF ()
8-
9-
101
LIST (APPEND exec_PROGRAMS
112
lib_buffer_unpack.c
123
simple_c.c
@@ -22,7 +13,7 @@ FOREACH (source_file ${exec_PROGRAMS})
2213
${source_file}
2314
)
2415
TARGET_LINK_LIBRARIES (${source_file_we}
25-
${MSGPACK_LIB}
16+
msgpackc
2617
)
2718
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
2819
SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra")

msgpack-config.cmake.in

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
#
77
# ::
88
#
9-
# msgpackc-static
109
# msgpackc
10+
# msgpackc-cxx
11+
# msgpackc-static (optional)
1112
#
1213

1314
@PACKAGE_INIT@
@@ -16,8 +17,4 @@ include(CMakeFindDependencyMacro)
1617

1718
if(NOT TARGET msgpackc AND NOT TARGET msgpackc-static)
1819
include("${CMAKE_CURRENT_LIST_DIR}/msgpack-targets.cmake")
19-
20-
if(NOT @MSGPACK_ENABLE_SHARED@)
21-
add_library(msgpackc ALIAS msgpackc-static)
22-
endif()
2320
endif()

0 commit comments

Comments
 (0)