Commit eb852207 by Aaron Bray Committed by Copybara-Service

PR #1699: Add option to build with MSVC static runtime

Imported from GitHub PR https://github.com/abseil/abseil-cpp/pull/1699

The correct CMake policy is set, but there is no option to switch the msvc runtime when configuring the project.

Since MSVC is a multiconfiguration build tool, we need to set this CMake variable internal to the project to ensure that all of the supported build configurations get properly set (i.e. `Release` builds use `/MT` or `/MD` and `Debug` builds use `/MTd` or `/MDd`).
I tried to explictly set these flags (i.e. -DCMAKE_CXX_FLAGS_XXX) when configuring the project, but these flags were being overwritten due to [explicitly setting compiler flags](https://github.com/abseil/abseil-cpp/blob/master/CMake/AbseilHelpers.cmake#L285).

Merge 4fbe3ae4695621c85fd328d4977e0392a614dac4 into b86d574c

Merging this change closes #1699

COPYBARA_INTEGRATE_REVIEW=https://github.com/abseil/abseil-cpp/pull/1699 from aaron-bray:msvc_runtime_library 4fbe3ae4695621c85fd328d4977e0392a614dac4
PiperOrigin-RevId: 652581337
Change-Id: I64b24127cda68b681a1cd327052150508df2c4a0
parent 65ede0a3
...@@ -61,6 +61,15 @@ list(APPEND CMAKE_MODULE_PATH ...@@ -61,6 +61,15 @@ list(APPEND CMAKE_MODULE_PATH
${CMAKE_CURRENT_LIST_DIR}/absl/copts ${CMAKE_CURRENT_LIST_DIR}/absl/copts
) )
option(ABSL_MSVC_STATIC_RUNTIME
"Link static runtime libraries"
OFF)
if(ABSL_MSVC_STATIC_RUNTIME)
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
else()
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
endif()
include(CMakePackageConfigHelpers) include(CMakePackageConfigHelpers)
include(GNUInstallDirs) include(GNUInstallDirs)
include(AbseilDll) include(AbseilDll)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment