Skip to content

Commit ddd6b7c

Browse files
authored
build: allow CMAKE_MSVC_RUNTIME_LIBRARY #1958 (#1960)
1 parent abefcb2 commit ddd6b7c

File tree

1 file changed

+18
-15
lines changed

1 file changed

+18
-15
lines changed

CMakeLists.txt

+18-15
Original file line numberDiff line numberDiff line change
@@ -122,22 +122,25 @@ if(MSVC)
122122
add_compile_options($<$<COMPILE_LANGUAGE:C>:/wd4267>)
123123

124124
# handle msvcrt setting being passed in CMAKE_C_FLAGS
125-
if(DEFINED CMAKE_MSVC_RUNTIME_LIBRARY)
126-
# do not support other methods of setting this (it would be more conformant, tho)
127-
message(FATAL_ERROR "please set msvcrt via CMAKE_C_FLAGS")
128-
endif()
129-
if(CMAKE_C_FLAGS MATCHES "[/-]MTd")
130-
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDebug")
131-
elseif(CMAKE_C_FLAGS MATCHES "[/-]MDd")
132-
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDebugDLL")
133-
elseif(CMAKE_C_FLAGS MATCHES "[/-]MT")
134-
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded")
135-
elseif(CMAKE_C_FLAGS MATCHES "[/-]MD")
136-
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDLL")
137-
endif()
125+
if(CMAKE_C_FLAGS MATCHES "[/-]M[TD]d?")
126+
# ensure CMAKE_MSVC_RUNTIME_LIBRARY is not already defined
127+
if(DEFINED CMAKE_MSVC_RUNTIME_LIBRARY)
128+
message(FATAL_ERROR "please set the runtime library via either CMAKE_C_FLAGS or CMAKE_MSVC_RUNTIME_LIBRARY, not both")
129+
endif()
138130

139-
# prevent the arg from occurring more than once (not a big deal, just to keep tidy)
140-
string(REGEX REPLACE "[/-]M[TD]d?" "" CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
131+
if(CMAKE_C_FLAGS MATCHES "[/-]MTd")
132+
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDebug")
133+
elseif(CMAKE_C_FLAGS MATCHES "[/-]MDd")
134+
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDebugDLL")
135+
elseif(CMAKE_C_FLAGS MATCHES "[/-]MT")
136+
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded")
137+
elseif(CMAKE_C_FLAGS MATCHES "[/-]MD")
138+
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDLL")
139+
endif()
140+
141+
# prevent the arg from occurring more than once (not a big deal, just to keep tidy)
142+
string(REGEX REPLACE "[/-]M[TD]d?" "" CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
143+
endif()
141144
else()
142145
if(MINGW)
143146
execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpmachine

0 commit comments

Comments
 (0)