1IF(MSGPACK_CXX11)
2    INCLUDE_DIRECTORIES(../include)
3
4    LIST(APPEND exec_PROGRAMS container.cpp non_def_con_class.cpp)
5
6    FOREACH(source_file ${exec_PROGRAMS})
7        GET_FILENAME_COMPONENT(source_file_we ${source_file} NAME_WE)
8        ADD_EXECUTABLE(${source_file_we} ${source_file})
9        IF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
10            SET_PROPERTY(
11                TARGET ${source_file_we}
12                APPEND_STRING
13                PROPERTY COMPILE_FLAGS "-Wall -Wextra -Werror -g -O3 "
14            )
15        ENDIF()
16
17        IF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
18            SET_PROPERTY(
19                TARGET ${source_file_we}
20                APPEND_STRING
21                PROPERTY COMPILE_FLAGS " -Wno-mismatched-tags"
22            )
23        ENDIF()
24
25        IF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
26            IF(
27                (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER
28                 ${GNUCXX_NO_MISMATCHED_TAGS_SUPPORT_VERSION}
29                 )
30                OR
31                    (CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL
32                     ${GNUCXX_NO_MISMATCHED_TAGS_SUPPORT_VERSION}
33                     )
34            )
35                SET_PROPERTY(
36                    TARGET ${source_file_we}
37                    APPEND_STRING
38                    PROPERTY COMPILE_FLAGS " -Wno-mismatched-tags"
39                )
40            ENDIF()
41        ENDIF()
42
43        IF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
44            IF(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
45                STRING(
46                    REGEX
47                    REPLACE
48                        "/W[0-4]"
49                        "/W3 /WX"
50                        CMAKE_CXX_FLAGS
51                        "${CMAKE_CXX_FLAGS}"
52                )
53            ELSE()
54                SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3 /WX")
55            ENDIF()
56        ENDIF()
57    ENDFOREACH()
58ENDIF()
59