2 cmake_minimum_required(VERSION 3.5)
5 project(YAMML VERSION ${PROJECT_VERSION})
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")
12 if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
13 set(UsePCH TRUE CACHE BOOL "Use precompiled headers")
15 set(UsePCH FALSE CACHE BOOL "Use precompiled headers")
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}
26 -D_CRT_SECURE_NO_WARNINGS
27 -D_SCL_SECURE_NO_WARNINGS
31 add_compile_options(/EHsc /W4)
33 add_compile_options(-std=c++1z -Wall -Wextra -Wno-missing-field-initializers)
36 if("${WarningAsError}")
38 add_compile_options(/WX)
40 add_compile_options(-Werror)
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)
49 if("${MSVC14}" AND "${MSVC14_3_OR_GREATER}")
50 add_definitions(-D_HAS_VARIABLE_TEMPLATES=1)
54 # http://stackoverflow.com/questions/14172856/cmake-compile-with-mt-instead-of-md
58 CMAKE_CXX_FLAGS_RELEASE
64 foreach(CompilerFlag ${CompilerFlags})
65 string(REPLACE "/MD" "/MT" ${CompilerFlag} "${${CompilerFlag}}")
68 set(Boost_USE_STATIC_RUNTIME ON)
71 if(${YAMMLStaticLink})
72 set(YAMMLLibLinkType "STATIC")
73 set(Boost_USE_STATIC_LIBS ON)
75 set(YAMMLLibLinkType "SHARED")
76 add_definitions(-DBOOST_ALL_DYN_LINK)
79 if("${CMAKE_BUILD_TYPE}" MATCHES "Rel")
80 set(Boost_USE_DEBUG_RUNTIME OFF)
83 if("${CYGWIN}" OR "${MINGW}")
84 set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -s")
87 find_package(Boost COMPONENTS program_options unit_test_framework REQUIRED)
89 include(cmake/common.cmake)
91 include_directories("include" ${Boost_INCLUDE_DIRS} ${PEGTLIncludeDir})
92 link_directories(${Boost_LIBRARY_DIRS})
95 add_subdirectory(test)