Skip to content

Commit

Permalink
PR #1699: Add option to build with MSVC static runtime
Browse files Browse the repository at this point in the history
Imported from GitHub PR #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 4fbe3ae into b86d574

Merging this change closes #1699

COPYBARA_INTEGRATE_REVIEW=#1699 from aaron-bray:msvc_runtime_library 4fbe3ae
PiperOrigin-RevId: 652581337
Change-Id: I64b24127cda68b681a1cd327052150508df2c4a0
  • Loading branch information
aaron-bray authored and copybara-github committed Jul 15, 2024
1 parent 65ede0a commit eb85220
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,15 @@ list(APPEND CMAKE_MODULE_PATH
${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(GNUInstallDirs)
include(AbseilDll)
Expand Down

0 comments on commit eb85220

Please sign in to comment.