CMakeLists.txt 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. FIND_PACKAGE (GTest REQUIRED)
  2. FIND_PACKAGE (ZLIB REQUIRED)
  3. FIND_PACKAGE (Threads REQUIRED)
  4. INCLUDE_DIRECTORIES (
  5. ${GTEST_INCLUDE_DIRS}
  6. ${ZLIB_INCLUDE_DIRS}
  7. )
  8. LIST (APPEND check_PROGRAMS
  9. array_ref.cpp
  10. buffer.cpp
  11. carray.cpp
  12. cases.cpp
  13. convert.cpp
  14. fixint.cpp
  15. fixint_c.cpp
  16. inc_adaptor_define.cpp
  17. json.cpp
  18. limit.cpp
  19. msgpack_basic.cpp
  20. msgpack_c.cpp
  21. msgpack_container.cpp
  22. msgpack_stream.cpp
  23. msgpack_tuple.cpp
  24. msgpack_vref.cpp
  25. object.cpp
  26. object_with_zone.cpp
  27. pack_unpack.cpp
  28. pack_unpack_c.cpp
  29. raw.cpp
  30. reference.cpp
  31. size_equal_only.cpp
  32. streaming.cpp
  33. streaming_c.cpp
  34. user_class.cpp
  35. version.cpp
  36. visitor.cpp
  37. zone.cpp
  38. )
  39. IF (MSGPACK_BOOST)
  40. LIST (APPEND check_PROGRAMS
  41. boost_fusion.cpp
  42. boost_variant.cpp
  43. boost_optional.cpp
  44. boost_string_ref.cpp
  45. boost_string_view.cpp
  46. )
  47. ENDIF ()
  48. IF (MSGPACK_USE_X3_PARSE)
  49. LIST (APPEND check_PROGRAMS
  50. msgpack_x3_parse.cpp
  51. )
  52. ENDIF ()
  53. IF (MSGPACK_CXX11)
  54. LIST (APPEND check_PROGRAMS
  55. iterator_cpp11.cpp
  56. msgpack_cpp11.cpp
  57. reference_cpp11.cpp
  58. reference_wrapper_cpp11.cpp
  59. shared_ptr_cpp11.cpp
  60. unique_ptr_cpp11.cpp
  61. # fuzzers are cpp11 only
  62. fuzz_unpack_pack_fuzzer_cpp11.cpp
  63. )
  64. ENDIF ()
  65. IF (MSGPACK_CXX17)
  66. LIST (APPEND check_PROGRAMS
  67. msgpack_cpp17.cpp
  68. )
  69. ENDIF ()
  70. FOREACH (source_file ${check_PROGRAMS})
  71. GET_FILENAME_COMPONENT (source_file_we ${source_file} NAME_WE)
  72. ADD_EXECUTABLE (
  73. ${source_file_we}
  74. ${source_file}
  75. )
  76. TARGET_LINK_LIBRARIES (${source_file_we}
  77. msgpackc
  78. ${GTEST_BOTH_LIBRARIES}
  79. ${ZLIB_LIBRARIES}
  80. ${CMAKE_THREAD_LIBS_INIT}
  81. )
  82. ADD_TEST (${source_file_we} ${source_file_we})
  83. IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
  84. SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra")
  85. ENDIF ()
  86. IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
  87. SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-mismatched-tags")
  88. ENDIF ()
  89. IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
  90. IF (CMAKE_CXX_FLAGS MATCHES "/W[0-4] /WX")
  91. STRING(REGEX REPLACE "/W[0-4]" "/W3 /WX" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
  92. ELSE ()
  93. SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3")
  94. ENDIF ()
  95. ENDIF ()
  96. ENDFOREACH ()
  97. ADD_EXECUTABLE (
  98. multi_file
  99. multi_file1.cpp multi_file2.cpp
  100. )
  101. TARGET_INCLUDE_DIRECTORIES (multi_file
  102. PRIVATE
  103. $<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
  104. )
  105. ADD_TEST (multi_file multi_file)