OSDN Git Service

NMAKE ではデフォルトで PCH を使用しないようにした
[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 find_package(Boost COMPONENTS unit_test_framework REQUIRED)
8
9 set(CMAKE_CXX_STANDARD 14)
10 set(CMAKE_CXX_STANDARD_REQUIRED ON)
11
12 set(PEGTLIncludeDir "../PEGTL" CACHE PATH "PEGTL include directory")
13 set(YAMMLStaticLink FALSE CACHE BOOL "Link libraries statically")
14 set(YAMMLStaticCRT FALSE CACHE BOOL "Use static link CRT")
15
16 if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
17     set(UsePCH TRUE CACHE BOOL "Use precompiled headers")
18 else()
19     set(UsePCH FALSE CACHE BOOL "Use precompiled headers")
20 endif()
21
22 include(cmake/common.cmake)
23
24 add_definitions(
25     -DYAMML_VERSION_MAJOR=${PROJECT_VERSION_MAJOR}
26     -DYAMML_VERSION_MINOR=${PROJECT_VERSION_MINOR}
27     -DYAMML_VERSION_DATE=${PROJECT_VERSION_PATCH}
28     -DYAMML_VERSION_BUILD=${PROJECT_VERSION_TWEAK}
29 )
30
31 if((${MSVC14} EQUAL 1) AND (${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER 19.00.23918))
32     add_definitions(-D_HAS_VARIABLE_TEMPLATES=1)
33 endif()
34
35 if(YAMMLStaticCRT)
36     # http://stackoverflow.com/questions/14172856/cmake-compile-with-mt-instead-of-md
37     set(CompilerFlags
38         CMAKE_CXX_FLAGS
39         CMAKE_CXX_FLAGS_DEBUG
40         CMAKE_CXX_FLAGS_RELEASE
41         CMAKE_C_FLAGS
42         CMAKE_C_FLAGS_DEBUG
43         CMAKE_C_FLAGS_RELEASE
44         )
45     foreach(CompilerFlag ${CompilerFlags})
46       string(REPLACE "/MD" "/MT" ${CompilerFlag} "${${CompilerFlag}}")
47     endforeach()
48     
49     set(Boost_USE_STATIC_RUNTIME ON)
50 endif()
51
52 if(YAMMLStaticLink)
53     set(YAMMLLibLinkType "STATIC")
54     set(Boost_USE_STATIC_LIBS ON)
55 else()
56     set(YAMMLLibLinkType "SHARED")
57 endif()
58
59 include_directories("include" ${Boost_INCLUDE_DIRS})
60 link_directories(${Boost_LIBRARY_DIRS})
61
62 add_subdirectory(src)
63 add_subdirectory(test)
64