1- cmake_minimum_required (VERSION 3.6 )
1+ cmake_minimum_required (VERSION 3.7 )
22if (COMMAND cmake_policy)
33 cmake_policy (SET CMP0003 NEW)
44endif (COMMAND cmake_policy)
55
6+ # MSVC runtime library flags are selected by an abstraction.
7+ if (COMMAND cmake_policy AND POLICY CMP0091)
8+ cmake_policy (SET CMP0091 NEW)
9+ endif ()
10+
611set (CMAKE_CXX_STANDARD 11)
712set (CMAKE_CXX_STANDARD_REQUIRED ON )
813set (CMAKE_CXX_EXTENSIONS OFF )
914
10- set (PROTOBUF_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR} /deps/protobuf)
11- add_subdirectory (${PROTOBUF_ROOT_DIR} /cmake deps/protobuf)
12-
1315set (protobuf_BUILD_TESTS OFF CACHE BOOL "Build protobuf tests" )
1416set (protobuf_WITH_ZLIB OFF CACHE BOOL "Build protobuf with zlib." )
17+ set (PROTOBUF_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR} /deps/protobuf)
18+ add_subdirectory (${PROTOBUF_ROOT_DIR} /cmake deps/protobuf)
1519
1620set (CMAKE_EXE_LINKER_FLAGS "-static-libstdc++" )
1721set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-stack-protector" )
@@ -22,8 +26,21 @@ add_executable(grpc_node_plugin
2226)
2327
2428if (MSVC )
25- add_definitions (/MTd)
26- endif (MSVC )
29+ if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.15)
30+ set (CMAKE_MSVC_RUNTIME_LIBRARY MultiThreaded$<$<CONFIG:Debug>:Debug>)
31+ else ()
32+ foreach (flag_var
33+ CMAKE_CXX_FLAGS
34+ CMAKE_CXX_FLAGS_DEBUG
35+ CMAKE_CXX_FLAGS_RELEASE
36+ CMAKE_CXX_FLAGS_MINSIZEREL
37+ CMAKE_CXX_FLAGS_RELWITHDEBINFO )
38+ if (${flag_var} MATCHES "/MD" )
39+ string (REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var} }" )
40+ endif (${flag_var} MATCHES "/MD" )
41+ endforeach (flag_var)
42+ endif ()
43+ endif (MVC)
2744
2845target_include_directories (grpc_node_plugin
2946 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
@@ -34,4 +51,4 @@ target_include_directories(grpc_node_plugin
3451target_link_libraries (grpc_node_plugin
3552 libprotoc
3653 libprotobuf
37- )
54+ )
0 commit comments