CMakeLists.txt 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. LIST (APPEND exec_PROGRAMS
  2. class_intrusive.cpp
  3. class_intrusive_map.cpp
  4. class_non_intrusive.cpp
  5. custom.cpp
  6. enum.cpp
  7. map_based_versionup.cpp
  8. protocol_new.cpp
  9. reuse_zone.cpp
  10. simple.cpp
  11. )
  12. IF (MSGPACK_DEFAULT_API_VERSION EQUAL 1)
  13. LIST (APPEND exec_PROGRAMS
  14. protocol.cpp
  15. )
  16. ENDIF ()
  17. IF (NOT MSVC)
  18. LIST (APPEND with_pthread_PROGRAMS
  19. stream.cpp
  20. )
  21. ENDIF ()
  22. IF (MSGPACK_BOOST)
  23. LIST (APPEND with_boost_lib_PROGRAMS
  24. speed_test.cpp
  25. speed_test_nested_array.cpp
  26. )
  27. ENDIF ()
  28. FOREACH (source_file ${exec_PROGRAMS})
  29. GET_FILENAME_COMPONENT (source_file_we ${source_file} NAME_WE)
  30. ADD_EXECUTABLE (
  31. ${source_file_we}
  32. ${source_file}
  33. )
  34. TARGET_INCLUDE_DIRECTORIES (${source_file_we}
  35. PRIVATE
  36. $<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
  37. )
  38. IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
  39. SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra")
  40. ENDIF ()
  41. IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
  42. IF (CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
  43. STRING(REGEX REPLACE "/W[0-4]" "/W3 /WX" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
  44. ELSE ()
  45. SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3 /WX")
  46. ENDIF ()
  47. ENDIF ()
  48. ENDFOREACH ()
  49. FOREACH (source_file ${with_pthread_PROGRAMS})
  50. GET_FILENAME_COMPONENT (source_file_we ${source_file} NAME_WE)
  51. ADD_EXECUTABLE (
  52. ${source_file_we}
  53. ${source_file}
  54. )
  55. TARGET_INCLUDE_DIRECTORIES (${source_file_we}
  56. PRIVATE
  57. $<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
  58. )
  59. TARGET_LINK_LIBRARIES (${source_file_we}
  60. ${CMAKE_THREAD_LIBS_INIT}
  61. )
  62. IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
  63. SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra")
  64. ENDIF ()
  65. IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
  66. IF (CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
  67. STRING(REGEX REPLACE "/W[0-4]" "/W3 /WX" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
  68. ELSE ()
  69. SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3 /WX")
  70. ENDIF ()
  71. ENDIF ()
  72. ENDFOREACH ()
  73. FOREACH (source_file ${with_boost_lib_PROGRAMS})
  74. INCLUDE_DIRECTORIES (
  75. ../include
  76. ${Boost_INCLUDE_DIRS}
  77. )
  78. GET_FILENAME_COMPONENT (source_file_we ${source_file} NAME_WE)
  79. ADD_EXECUTABLE (
  80. ${source_file_we}
  81. ${source_file}
  82. )
  83. TARGET_INCLUDE_DIRECTORIES (${source_file_we}
  84. PRIVATE
  85. $<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
  86. )
  87. LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
  88. TARGET_LINK_LIBRARIES (${source_file_we}
  89. ${Boost_TIMER_LIBRARY}
  90. ${Boost_CHRONO_LIBRARY}
  91. ${Boost_SYSTEM_LIBRARY}
  92. )
  93. IF (NOT MSVC AND NOT APPLE)
  94. TARGET_LINK_LIBRARIES (${source_file_we}
  95. rt
  96. )
  97. ENDIF ()
  98. IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
  99. SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS "-Wall -Wextra -Werror -O3")
  100. ENDIF ()
  101. IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
  102. SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-mismatched-tags")
  103. ENDIF ()
  104. IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
  105. IF (CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
  106. STRING(REGEX REPLACE "/W[0-4]" "/W3 /WX" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
  107. ELSE ()
  108. SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3 /WX")
  109. ENDIF ()
  110. ENDIF ()
  111. ENDFOREACH ()