Skip to content

Commit 5140791

Browse files
committed
cmake: support static runtime linking
1 parent 48cfe47 commit 5140791

File tree

3 files changed

+16
-0
lines changed

3 files changed

+16
-0
lines changed

CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ endif()
9090
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
9191

9292
if (MSVC)
93+
include(cmake/msvc_static_runtime.cmake)
9394
add_definitions(-D_WIN32_WINNT=0x600 -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINSOCK_DEPRECATED_NO_WARNINGS)
9495
# needed to compile protobuf
9596
add_definitions(/wd4065 /wd4506)

cmake/msvc_static_runtime.cmake

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
option(gRPC_MSVC_STATIC_RUNTIME "Link with static msvc runtime libraries" OFF)
2+
3+
if(gRPC_MSVC_STATIC_RUNTIME)
4+
# switch from dynamic to static linking of msvcrt
5+
foreach(flag_var
6+
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
7+
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
8+
9+
if(${flag_var} MATCHES "/MD")
10+
string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
11+
endif(${flag_var} MATCHES "/MD")
12+
endforeach(flag_var)
13+
endif()
14+

templates/CMakeLists.txt.template

+1
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@
134134
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
135135

136136
if (MSVC)
137+
include(cmake/msvc_static_runtime.cmake)
137138
add_definitions(-D_WIN32_WINNT=0x600 -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINSOCK_DEPRECATED_NO_WARNINGS)
138139
# needed to compile protobuf
139140
add_definitions(/wd4065 /wd4506)

0 commit comments

Comments
 (0)