diff options
author | Feng Xiao <xfxyjwf@gmail.com> | 2015-08-12 14:11:12 -0700 |
---|---|---|
committer | Feng Xiao <xfxyjwf@gmail.com> | 2015-08-12 14:11:12 -0700 |
commit | 38a56ee4b19d72c2e9d81a08b018704d1addf561 (patch) | |
tree | a51aed645426a40d7e26d90e53f08dface6c2fa4 /cmake/CMakeLists.txt | |
parent | edaefac5d2221ab26b9988fb76c79760c6495fb8 (diff) | |
parent | 9bdeba479b853bff5d2bfcebc9ebc9d851663cfd (diff) | |
download | protobuf-38a56ee4b19d72c2e9d81a08b018704d1addf561.tar.gz protobuf-38a56ee4b19d72c2e9d81a08b018704d1addf561.tar.bz2 protobuf-38a56ee4b19d72c2e9d81a08b018704d1addf561.zip |
Merge pull request #702 from jtattermusch/visual_studio_build_static_runtime
Link runtime statically for VS build
Diffstat (limited to 'cmake/CMakeLists.txt')
-rw-r--r-- | cmake/CMakeLists.txt | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index d36292df..6c91e137 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -43,6 +43,19 @@ endif (HAVE_ZLIB) if (MSVC) if (BUILD_SHARED_LIBS) add_definitions(-DPROTOBUF_USE_DLLS) + else (BUILD_SHARED_LIBS) + # In case we are building static libraries, link also the runtime library statically + # so that MSVCR*.DLL is not required at runtime. + # https://msdn.microsoft.com/en-us/library/2kzt1wy3.aspx + # This is achieved by replacing msvc option /MD with /MT and /MDd with /MTd + # http://www.cmake.org/Wiki/CMake_FAQ#How_can_I_build_my_MSVC_application_with_a_static_runtime.3F + foreach(flag_var + CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) + if(${flag_var} MATCHES "/MD") + string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") + endif(${flag_var} MATCHES "/MD") + endforeach(flag_var) endif (BUILD_SHARED_LIBS) add_definitions(/wd4244 /wd4267 /wd4018 /wd4355 /wd4800 /wd4251 /wd4996 /wd4146 /wd4305) endif (MSVC) |