OSDN Git Service

yamml.cpp: CreateDefaultOutputName() を YAMML::Driver 以下に移動
[yamml/yamml-git.git] / CMakeLists.txt
1
2 cmake_minimum_required(VERSION 3.5)
3 enable_testing()
4
5 project(YAMML VERSION ${PROJECT_VERSION})
6
7 set(PEGTLIncludeDir "../PEGTL" CACHE PATH "PEGTL include directory")
8 set(YAMMLStaticLink FALSE CACHE BOOL "Link libraries statically")
9 set(YAMMLStaticCRT FALSE CACHE BOOL "Use static link CRT")
10 set(WarningAsError TRUE CACHE BOOL "Treat warnings as errors")
11
12 if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
13     set(UsePCH TRUE CACHE BOOL "Use precompiled headers")
14 else()
15     set(UsePCH FALSE CACHE BOOL "Use precompiled headers")
16 endif()
17
18 add_definitions(
19     -DYAMML_VERSION_MAJOR=${PROJECT_VERSION_MAJOR}
20     -DYAMML_VERSION_MINOR=${PROJECT_VERSION_MINOR}
21     -DYAMML_VERSION_DATE=${PROJECT_VERSION_PATCH}
22     -DYAMML_VERSION_BUILD=${PROJECT_VERSION_TWEAK}
23     
24     -DWIN32_LEAN_AND_MEAN
25     -D_HAS_AUTO_PTR_ETC=1
26     -D_CRT_SECURE_NO_WARNINGS
27     -D_SCL_SECURE_NO_WARNINGS
28 )
29
30 if("${MSVC}")
31     add_compile_options(/EHsc /W4)
32 else()
33     add_compile_options(-std=c++1z -Wall -Wextra -Wno-missing-field-initializers)
34 endif()
35
36 if("${WarningAsError}")
37     if("${MSVC}")
38         add_compile_options(/WX)
39     else()
40         add_compile_options(-Werror)
41     endif()
42 endif()
43
44 if("${MSVC}" AND (${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER 19.00.23918))
45     set(MSVC14_3_OR_GREATER 1)
46     add_compile_options(/std:c++latest)
47 endif()
48
49 if("${MSVC14}" AND "${MSVC14_3_OR_GREATER}")
50     add_definitions(-D_HAS_VARIABLE_TEMPLATES=1)
51 endif()
52
53 if(${YAMMLStaticCRT})
54     # http://stackoverflow.com/questions/14172856/cmake-compile-with-mt-instead-of-md
55     set(CompilerFlags
56         CMAKE_CXX_FLAGS
57         CMAKE_CXX_FLAGS_DEBUG
58         CMAKE_CXX_FLAGS_RELEASE
59         CMAKE_C_FLAGS
60         CMAKE_C_FLAGS_DEBUG
61         CMAKE_C_FLAGS_RELEASE
62         )
63
64     foreach(CompilerFlag ${CompilerFlags})
65       string(REPLACE "/MD" "/MT" ${CompilerFlag} "${${CompilerFlag}}")
66     endforeach()
67     
68     set(Boost_USE_STATIC_RUNTIME ON)
69 endif()
70
71 if(${YAMMLStaticLink})
72     set(YAMMLLibLinkType "STATIC")
73     set(Boost_USE_STATIC_LIBS ON)
74 else()
75     set(YAMMLLibLinkType "SHARED")
76     add_definitions(-DBOOST_ALL_DYN_LINK)
77 endif()
78
79 if("${CMAKE_BUILD_TYPE}" MATCHES "Rel")
80     set(Boost_USE_DEBUG_RUNTIME OFF)
81 endif()
82
83 if("${CYGWIN}" OR "${MINGW}")
84     set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -s")
85 endif()
86
87 find_package(Boost COMPONENTS program_options unit_test_framework REQUIRED)
88
89 include(cmake/common.cmake)
90
91 include_directories("include" ${Boost_INCLUDE_DIRS} ${PEGTLIncludeDir})
92 link_directories(${Boost_LIBRARY_DIRS})
93
94 add_subdirectory(src)
95 add_subdirectory(test)
96