add MSGPACK_CXX_ONLY option to build c++ libraries only

This commit is contained in:
yuangongji 2020-02-08 17:51:49 +08:00
parent d04520044f
commit d9c5978958
9 changed files with 221 additions and 141 deletions

View File

@ -156,38 +156,54 @@ IF (GTEST_FOUND AND ZLIB_FOUND AND THREADS_FOUND AND NOT "${MSGPACK_FUZZ_REGRESS
OPTION (MSGPACK_GEN_COVERAGE "Enable running gcov to get a test coverage report." OFF) OPTION (MSGPACK_GEN_COVERAGE "Enable running gcov to get a test coverage report." OFF)
ENDIF () ENDIF ()
IF (DEFINED BUILD_SHARED_LIBS)
IF (BUILD_SHARED_LIBS)
IF (DEFINED MSGPACK_ENABLE_SHARED AND NOT MSGPACK_ENABLE_SHARED)
MESSAGE(WARNING "MSGPACK_ENABLE_SHARED is overridden to ON by BUILD_SHARED_LIBS")
ENDIF ()
SET (MSGPACK_ENABLE_SHARED ON)
IF (DEFINED MSGPACK_ENABLE_STATIC AND MSGPACK_ENABLE_STATIC)
MESSAGE(WARNING "MSGPACK_ENABLE_STATIC is overridden to OFF by BUILD_SHARED_LIBS")
ENDIF ()
SET (MSGPACK_ENABLE_STATIC OFF)
ELSE ()
IF (DEFINED MSGPACK_ENABLE_SHARED AND MSGPACK_ENABLE_SHARED)
MESSAGE(WARNING "MSGPACK_ENABLE_SHARED is overridden to OFF by BUILD_SHARED_LIBS")
ENDIF ()
SET (MSGPACK_ENABLE_SHARED OFF)
IF (DEFINED MSGPACK_ENABLE_STATIC AND NOT MSGPACK_ENABLE_STATIC)
MESSAGE(WARNING "MSGPACK_ENABLE_STATIC is overridden to ON by BUILD_SHARED_LIBS")
ENDIF ()
SET (MSGPACK_ENABLE_STATIC ON)
ENDIF ()
ELSE ()
IF (NOT DEFINED MSGPACK_ENABLE_SHARED)
SET (MSGPACK_ENABLE_SHARED ON)
ENDIF ()
IF (NOT DEFINED MSGPACK_ENABLE_STATIC)
SET (MSGPACK_ENABLE_STATIC ON)
ENDIF ()
SET (BUILD_SHARED_LIBS ${MSGPACK_ENABLE_SHARED})
ENDIF ()
OPTION (MSGPACK_ENABLE_CXX "Enable C++ interface." ON) OPTION (MSGPACK_ENABLE_CXX "Enable C++ interface." ON)
OPTION (MSGPACK_CXX_ONLY "Build only C++ libraries (header-only)." OFF)
IF (MSGPACK_CXX_ONLY)
IF (DEFINED MSGPACK_ENABLE_SHARED AND MSGPACK_ENABLE_SHARED)
MESSAGE(WARNING "MSGPACK_ENABLE_SHARED is overridden to OFF by MSGPACK_CXX_ONLY")
ENDIF ()
SET (MSGPACK_ENABLE_SHARED OFF)
IF (DEFINED MSGPACK_ENABLE_STATIC AND MSGPACK_ENABLE_STATIC)
MESSAGE(WARNING "MSGPACK_ENABLE_STATIC is overridden to OFF by MSGPACK_CXX_ONLY")
ENDIF ()
SET (MSGPACK_ENABLE_STATIC OFF)
IF (DEFINED MSGPACK_ENABLE_CXX AND NOT MSGPACK_ENABLE_CXX)
MESSAGE(WARNING "MSGPACK_ENABLE_CXX is overridden to ON by MSGPACK_CXX_ONLY")
ENDIF ()
SET (MSGPACK_ENABLE_CXX ON)
ELSE ()
IF (DEFINED BUILD_SHARED_LIBS)
IF (BUILD_SHARED_LIBS)
IF (DEFINED MSGPACK_ENABLE_SHARED AND NOT MSGPACK_ENABLE_SHARED)
MESSAGE(WARNING "MSGPACK_ENABLE_SHARED is overridden to ON by BUILD_SHARED_LIBS")
ENDIF ()
SET (MSGPACK_ENABLE_SHARED ON)
IF (DEFINED MSGPACK_ENABLE_STATIC AND MSGPACK_ENABLE_STATIC)
MESSAGE(WARNING "MSGPACK_ENABLE_STATIC is overridden to OFF by BUILD_SHARED_LIBS")
ENDIF ()
SET (MSGPACK_ENABLE_STATIC OFF)
ELSE ()
IF (DEFINED MSGPACK_ENABLE_SHARED AND MSGPACK_ENABLE_SHARED)
MESSAGE(WARNING "MSGPACK_ENABLE_SHARED is overridden to OFF by BUILD_SHARED_LIBS")
ENDIF ()
SET (MSGPACK_ENABLE_SHARED OFF)
IF (DEFINED MSGPACK_ENABLE_STATIC AND NOT MSGPACK_ENABLE_STATIC)
MESSAGE(WARNING "MSGPACK_ENABLE_STATIC is overridden to ON by BUILD_SHARED_LIBS")
ENDIF ()
SET (MSGPACK_ENABLE_STATIC ON)
ENDIF ()
ELSE ()
IF (NOT DEFINED MSGPACK_ENABLE_SHARED)
SET (MSGPACK_ENABLE_SHARED ON)
ENDIF ()
IF (NOT DEFINED MSGPACK_ENABLE_STATIC)
SET (MSGPACK_ENABLE_STATIC ON)
ENDIF ()
SET (BUILD_SHARED_LIBS ${MSGPACK_ENABLE_SHARED})
ENDIF ()
ENDIF ()
INCLUDE (CheckCXXSourceCompiles) INCLUDE (CheckCXXSourceCompiles)
CHECK_CXX_SOURCE_COMPILES (" CHECK_CXX_SOURCE_COMPILES ("
#include <bits/atomicity.h> #include <bits/atomicity.h>
@ -380,7 +396,7 @@ FOREACH (file ${msgpackc_HEADERS})
GET_FILENAME_COMPONENT (dir ${file} PATH) GET_FILENAME_COMPONENT (dir ${file} PATH)
INSTALL (FILES ${file} DESTINATION ${CMAKE_INSTALL_PREFIX}/${dir}) INSTALL (FILES ${file} DESTINATION ${CMAKE_INSTALL_PREFIX}/${dir})
ENDFOREACH () ENDFOREACH ()
IF (NOT MSVC) IF (NOT MSGPACK_CXX_ONLY AND NOT MSVC)
INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR}/msgpack.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR}/msgpack.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
ENDIF () ENDIF ()
@ -454,17 +470,19 @@ CONFIGURE_PACKAGE_CONFIG_FILE (msgpack-config.cmake.in
INSTALL_DESTINATION "${CMAKE_INSTALL_CMAKEDIR}" INSTALL_DESTINATION "${CMAKE_INSTALL_CMAKEDIR}"
) )
INSTALL (EXPORT msgpack-targets IF (NOT MSGPACK_CXX_ONLY)
FILE INSTALL (EXPORT msgpack-targets
msgpack-targets.cmake FILE
DESTINATION msgpack-targets.cmake
"${CMAKE_INSTALL_CMAKEDIR}" DESTINATION
) "${CMAKE_INSTALL_CMAKEDIR}"
)
INSTALL ( INSTALL (
FILES FILES
"${CMAKE_CURRENT_BINARY_DIR}/msgpack-config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/msgpack-config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/msgpack-config-version.cmake" "${CMAKE_CURRENT_BINARY_DIR}/msgpack-config-version.cmake"
DESTINATION DESTINATION
"${CMAKE_INSTALL_CMAKEDIR}" "${CMAKE_INSTALL_CMAKEDIR}"
) )
ENDIF ()

View File

@ -5,14 +5,11 @@ LIST (APPEND msgpackc_SOURCES
src/vrefbuffer.c src/vrefbuffer.c
src/zone.c src/zone.c
) )
# For both C and C++ libraries
LIST (APPEND msgpackc_HEADERS LIST (APPEND msgpackc_HEADERS
include/msgpack.h
include/msgpack/fbuffer.h include/msgpack/fbuffer.h
include/msgpack/gcc_atomic.h
include/msgpack/object.h include/msgpack/object.h
include/msgpack/pack.h
include/msgpack/pack_define.h
include/msgpack/pack_template.h
include/msgpack/predef.h include/msgpack/predef.h
include/msgpack/predef/architecture.h include/msgpack/predef/architecture.h
include/msgpack/predef/architecture/alpha.h include/msgpack/predef/architecture/alpha.h
@ -152,20 +149,33 @@ LIST (APPEND msgpackc_HEADERS
include/msgpack/predef/platform/windows_uwp.h include/msgpack/predef/platform/windows_uwp.h
include/msgpack/predef/version.h include/msgpack/predef/version.h
include/msgpack/predef/version_number.h include/msgpack/predef/version_number.h
include/msgpack/sbuffer.h
include/msgpack/sysdep.h include/msgpack/sysdep.h
include/msgpack/timestamp.h
include/msgpack/unpack.h
include/msgpack/unpack_define.h include/msgpack/unpack_define.h
include/msgpack/unpack_template.h
include/msgpack/util.h
include/msgpack/version.h
include/msgpack/version_master.h include/msgpack/version_master.h
include/msgpack/vrefbuffer.h
include/msgpack/zbuffer.h include/msgpack/zbuffer.h
include/msgpack/zone.h include/msgpack/zone.h
) )
IF (NOT MSGPACK_CXX_ONLY)
# Only for C library
LIST (APPEND msgpackc_HEADERS
include/msgpack.h
include/msgpack/gcc_atomic.h
include/msgpack/pack.h
include/msgpack/pack_define.h
include/msgpack/pack_template.h
include/msgpack/sbuffer.h
include/msgpack/timestamp.h
include/msgpack/unpack.h
include/msgpack/unpack_template.h
include/msgpack/util.h
include/msgpack/version.h
include/msgpack/vrefbuffer.h
)
ENDIF ()
IF (MSGPACK_ENABLE_CXX) IF (MSGPACK_ENABLE_CXX)
# Only for C++ library
LIST (APPEND msgpackc_HEADERS LIST (APPEND msgpackc_HEADERS
include/msgpack.hpp include/msgpack.hpp
include/msgpack/adaptor/adaptor_base.hpp include/msgpack/adaptor/adaptor_base.hpp

View File

@ -1,5 +1,9 @@
ADD_SUBDIRECTORY (c) IF (NOT MSGPACK_CXX_ONLY)
ADD_SUBDIRECTORY (cpp03) ADD_SUBDIRECTORY (c)
ADD_SUBDIRECTORY (cpp11) ENDIF ()
ADD_SUBDIRECTORY (boost) IF (MSGPACK_ENABLE_CXX)
ADD_SUBDIRECTORY (x3) ADD_SUBDIRECTORY (cpp03)
ADD_SUBDIRECTORY (cpp11)
ADD_SUBDIRECTORY (boost)
ADD_SUBDIRECTORY (x3)
ENDIF ()

View File

@ -27,7 +27,7 @@ FOREACH (source_file ${exec_PROGRAMS})
) )
TARGET_INCLUDE_DIRECTORIES (${source_file_we} TARGET_INCLUDE_DIRECTORIES (${source_file_we}
PRIVATE PRIVATE
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES> $<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
) )
TARGET_LINK_LIBRARIES (${source_file_we} TARGET_LINK_LIBRARIES (${source_file_we}
${Boost_SYSTEM_LIBRARY} ${Boost_SYSTEM_LIBRARY}

View File

@ -37,7 +37,7 @@ FOREACH (source_file ${exec_PROGRAMS})
) )
TARGET_INCLUDE_DIRECTORIES (${source_file_we} TARGET_INCLUDE_DIRECTORIES (${source_file_we}
PRIVATE PRIVATE
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES> $<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
) )
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra") SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra")
@ -59,7 +59,7 @@ FOREACH (source_file ${with_pthread_PROGRAMS})
) )
TARGET_INCLUDE_DIRECTORIES (${source_file_we} TARGET_INCLUDE_DIRECTORIES (${source_file_we}
PRIVATE PRIVATE
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES> $<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
) )
TARGET_LINK_LIBRARIES (${source_file_we} TARGET_LINK_LIBRARIES (${source_file_we}
${CMAKE_THREAD_LIBS_INIT} ${CMAKE_THREAD_LIBS_INIT}
@ -88,7 +88,7 @@ FOREACH (source_file ${with_boost_lib_PROGRAMS})
) )
TARGET_INCLUDE_DIRECTORIES (${source_file_we} TARGET_INCLUDE_DIRECTORIES (${source_file_we}
PRIVATE PRIVATE
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES> $<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
) )
LINK_DIRECTORIES(${Boost_LIBRARY_DIRS}) LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
TARGET_LINK_LIBRARIES (${source_file_we} TARGET_LINK_LIBRARIES (${source_file_we}

View File

@ -22,7 +22,7 @@ IF (MSGPACK_CXX11 OR MSGPACK_CXX17)
) )
TARGET_INCLUDE_DIRECTORIES (${source_file_we} TARGET_INCLUDE_DIRECTORIES (${source_file_we}
PRIVATE PRIVATE
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES> $<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
) )
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra") SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra")

View File

@ -20,7 +20,7 @@ IF (MSGPACK_USE_X3_PARSE AND MSGPACK_DEFAULT_API_VERSION VERSION_GREATER 1)
) )
TARGET_INCLUDE_DIRECTORIES (${source_file_we} TARGET_INCLUDE_DIRECTORIES (${source_file_we}
PRIVATE PRIVATE
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES> $<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
) )
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra") SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra")
@ -46,7 +46,7 @@ IF (MSGPACK_USE_X3_PARSE AND MSGPACK_DEFAULT_API_VERSION VERSION_GREATER 1)
) )
TARGET_INCLUDE_DIRECTORIES (${source_file_we} TARGET_INCLUDE_DIRECTORIES (${source_file_we}
PRIVATE PRIVATE
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES> $<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
) )
TARGET_LINK_LIBRARIES (${source_file_we} TARGET_LINK_LIBRARIES (${source_file_we}
${Boost_CONTEXT_LIBRARY} ${Boost_CONTEXT_LIBRARY}

View File

@ -1,21 +1,48 @@
#!/bin/sh #!/bin/bash
c_headers=(
include/msgpack.h
include/msgpack/gcc_atomic.h
include/msgpack/pack.h
include/msgpack/pack_define.h
include/msgpack/pack_template.h
include/msgpack/sbuffer.h
include/msgpack/timestamp.h
include/msgpack/unpack.h
include/msgpack/unpack_template.h
include/msgpack/util.h
include/msgpack/version.h
include/msgpack/vrefbuffer.h
)
rm -f c_headers.tmp
for hdr in ${c_headers[@]}; do
echo $hdr >> c_headers.tmp
done
find src -name "*.c" | sed -e 's/\s\+/\n/g' | sort > srcs.tmp find src -name "*.c" | sed -e 's/\s\+/\n/g' | sort > srcs.tmp
find include -name "*.h" | sed -e 's/\s\+/\n/g' | sort > c_headers.tmp find include -name "*.h" | grep -vFf c_headers.tmp | sed -e 's/\s\+/\n/g' | sort > c_cpp_headers.tmp
find include -name "*.hpp" | sed -e 's/\s\+/\n/g' | sort > cpp_headers.tmp find include -name "*.hpp" | sed -e 's/\s\+/\n/g' | sort > cpp_headers.tmp
echo 'LIST (APPEND msgpackc_SOURCES' > Files.cmake echo 'LIST (APPEND msgpackc_SOURCES' > Files.cmake
cat srcs.tmp | sed -e 's/^/ /g' >> Files.cmake cat srcs.tmp | sed -e 's/^/ /g' >> Files.cmake
echo ')' >> Files.cmake echo -e ')\n' >> Files.cmake
echo 'LIST (APPEND msgpackc_HEADERS' >> Files.cmake echo '# For both C and C++ libraries
cat c_headers.tmp | sed -e 's/^/ /g' >> Files.cmake LIST (APPEND msgpackc_HEADERS' >> Files.cmake
echo ')' >> Files.cmake cat c_cpp_headers.tmp | sed -e 's/^/ /g' >> Files.cmake
echo -e ')\n' >> Files.cmake
echo 'IF (MSGPACK_ENABLE_CXX)' >> Files.cmake echo 'IF (NOT MSGPACK_CXX_ONLY)
echo ' LIST (APPEND msgpackc_HEADERS' >> Files.cmake # Only for C library
LIST (APPEND msgpackc_HEADERS' >> Files.cmake
cat c_headers.tmp | sed -e 's/^/ /g' >> Files.cmake
echo -e ' )\nENDIF ()\n' >> Files.cmake
echo 'IF (MSGPACK_ENABLE_CXX)
# Only for C++ library
LIST (APPEND msgpackc_HEADERS' >> Files.cmake
cat cpp_headers.tmp | sed -e 's/^/ /g' >> Files.cmake cat cpp_headers.tmp | sed -e 's/^/ /g' >> Files.cmake
echo ' )' >> Files.cmake echo -e ' )\nENDIF ()' >> Files.cmake
echo 'ENDIF ()' >> Files.cmake
rm -f srcs.tmp c_headers.tmp cpp_headers.tmp rm -f srcs.tmp c_headers.tmp cpp_headers.tmp c_cpp_headers.tmp

View File

@ -7,73 +7,84 @@ INCLUDE_DIRECTORIES (
${ZLIB_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIRS}
) )
LIST (APPEND check_PROGRAMS SET (tests_C
array_ref.cpp
buffer.cpp
carray.cpp
cases.cpp
convert.cpp
fixint.cpp
fixint_c.cpp fixint_c.cpp
inc_adaptor_define.cpp
json.cpp
limit.cpp
msgpack_basic.cpp
msgpack_c.cpp msgpack_c.cpp
msgpack_container.cpp
msgpack_stream.cpp
msgpack_tuple.cpp
msgpack_vref.cpp
object.cpp
object_with_zone.cpp
pack_unpack.cpp
pack_unpack_c.cpp pack_unpack_c.cpp
raw.cpp
reference.cpp
size_equal_only.cpp
streaming.cpp
streaming_c.cpp streaming_c.cpp
user_class.cpp
version.cpp
visitor.cpp
zone.cpp
) )
IF (MSGPACK_BOOST) IF (NOT MSGPACK_CXX_ONLY)
LIST (APPEND check_PROGRAMS LIST (APPEND check_PROGRAMS
boost_fusion.cpp ${tests_C}
boost_variant.cpp
boost_optional.cpp
boost_string_ref.cpp
boost_string_view.cpp
) )
ENDIF () ENDIF ()
IF (MSGPACK_USE_X3_PARSE) IF (MSGPACK_ENABLE_CXX)
LIST (APPEND check_PROGRAMS LIST (APPEND check_PROGRAMS
msgpack_x3_parse.cpp array_ref.cpp
buffer.cpp
carray.cpp
cases.cpp
convert.cpp
fixint.cpp
inc_adaptor_define.cpp
json.cpp
limit.cpp
msgpack_basic.cpp
msgpack_container.cpp
msgpack_stream.cpp
msgpack_tuple.cpp
msgpack_vref.cpp
object.cpp
object_with_zone.cpp
pack_unpack.cpp
raw.cpp
reference.cpp
size_equal_only.cpp
streaming.cpp
user_class.cpp
version.cpp
visitor.cpp
zone.cpp
) )
ENDIF ()
IF (MSGPACK_CXX11 OR MSGPACK_CXX17) IF (MSGPACK_BOOST)
LIST (APPEND check_PROGRAMS LIST (APPEND check_PROGRAMS
iterator_cpp11.cpp boost_fusion.cpp
msgpack_cpp11.cpp boost_variant.cpp
reference_cpp11.cpp boost_optional.cpp
reference_wrapper_cpp11.cpp boost_string_ref.cpp
shared_ptr_cpp11.cpp boost_string_view.cpp
unique_ptr_cpp11.cpp )
ENDIF ()
# fuzzers are cpp11 only IF (MSGPACK_USE_X3_PARSE)
fuzz_unpack_pack_fuzzer_cpp11.cpp LIST (APPEND check_PROGRAMS
) msgpack_x3_parse.cpp
ENDIF () )
ENDIF ()
IF (MSGPACK_CXX17) IF (MSGPACK_CXX11 OR MSGPACK_CXX17)
LIST (APPEND check_PROGRAMS LIST (APPEND check_PROGRAMS
msgpack_cpp17.cpp iterator_cpp11.cpp
) msgpack_cpp11.cpp
ENDIF () reference_cpp11.cpp
reference_wrapper_cpp11.cpp
shared_ptr_cpp11.cpp
unique_ptr_cpp11.cpp
# fuzzers are cpp11 only
fuzz_unpack_pack_fuzzer_cpp11.cpp
)
ENDIF ()
IF (MSGPACK_CXX17)
LIST (APPEND check_PROGRAMS
msgpack_cpp17.cpp
)
ENDIF ()
ENDIF (MSGPACK_ENABLE_CXX)
FOREACH (source_file ${check_PROGRAMS}) FOREACH (source_file ${check_PROGRAMS})
GET_FILENAME_COMPONENT (source_file_we ${source_file} NAME_WE) GET_FILENAME_COMPONENT (source_file_we ${source_file} NAME_WE)
@ -81,8 +92,16 @@ FOREACH (source_file ${check_PROGRAMS})
${source_file_we} ${source_file_we}
${source_file} ${source_file}
) )
LIST (FIND tests_C ${source_file} idx)
IF (idx GREATER -1)
SET (link_target msgpackc)
ELSE ()
SET (link_target msgpackc-cxx)
ENDIF ()
TARGET_LINK_LIBRARIES (${source_file_we} TARGET_LINK_LIBRARIES (${source_file_we}
msgpackc ${link_target}
${GTEST_BOTH_LIBRARIES} ${GTEST_BOTH_LIBRARIES}
${ZLIB_LIBRARIES} ${ZLIB_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT} ${CMAKE_THREAD_LIBS_INIT}
@ -104,12 +123,14 @@ FOREACH (source_file ${check_PROGRAMS})
ENDIF () ENDIF ()
ENDFOREACH () ENDFOREACH ()
ADD_EXECUTABLE ( IF (MSGPACK_ENABLE_CXX)
multi_file ADD_EXECUTABLE (
multi_file1.cpp multi_file2.cpp multi_file
) multi_file1.cpp multi_file2.cpp
TARGET_INCLUDE_DIRECTORIES (multi_file )
PRIVATE TARGET_INCLUDE_DIRECTORIES (multi_file
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES> PRIVATE
) $<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
ADD_TEST (multi_file multi_file) )
ADD_TEST (multi_file multi_file)
ENDIF ()