From 674c97664701f949350483ddf28ad83fc60c3016 Mon Sep 17 00:00:00 2001 From: Duncan Ogilvie Date: Fri, 21 Jun 2024 00:32:30 +0200 Subject: [PATCH] Do not set CMAKE_MSVC_RUNTIME_LIBRARY if it's already set --- src/cmake_generator.cpp | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/src/cmake_generator.cpp b/src/cmake_generator.cpp index 255b885..c086ecd 100644 --- a/src/cmake_generator.cpp +++ b/src/cmake_generator.cpp @@ -731,23 +731,6 @@ void generate_cmake(const char *path, const parser::Project *parent_project) { if (is_root_project) { cmd("cmake_minimum_required")("VERSION", project.cmake_version).endl(); - if (project.project_msvc_runtime != parser::msvc_last) { - comment("Enable support for MSVC_RUNTIME_LIBRARY"); - cmd("cmake_policy")("SET", "CMP0091", "NEW"); - - switch (project.project_msvc_runtime) { - case parser::msvc_dynamic: - cmd("set")("CMAKE_MSVC_RUNTIME_LIBRARY", "MultiThreaded$<$:Debug>DLL"); - break; - case parser::msvc_static: - cmd("set")("CMAKE_MSVC_RUNTIME_LIBRARY", "MultiThreaded$<$:Debug>"); - break; - default: - break; - } - endl(); - } - // clang-format on if (!project.allow_in_tree) { // clang-format off @@ -778,6 +761,26 @@ void generate_cmake(const char *path, const parser::Project *parent_project) { cmd("endif")().endl(); // clang-format on + if (project.project_msvc_runtime != parser::msvc_last) { + comment("Enable support for MSVC_RUNTIME_LIBRARY"); + cmd("cmake_policy")("SET", "CMP0091", "NEW"); + + // clang-format off + cmd("if")("NOT", "DEFINED", "CMAKE_MSVC_RUNTIME_LIBRARY"); + switch (project.project_msvc_runtime) { + case parser::msvc_dynamic: + cmd("set")("CMAKE_MSVC_RUNTIME_LIBRARY", "MultiThreaded$<$:Debug>DLL"); + break; + case parser::msvc_static: + cmd("set")("CMAKE_MSVC_RUNTIME_LIBRARY", "MultiThreaded$<$:Debug>"); + break; + default: + break; + } + cmd("endif")().endl(); + // clang-format on + } + fs::path cmkr_include(project.cmkr_include); if (!project.cmkr_include.empty() && !fs::exists(cmkr_include) && cmkr_include.is_relative()) { create_file(cmkr_include, resources::cmkr);