Skip to content

Commit 2d7e537

Browse files
committed
Use CMake policy CMP0091 for MSVC runtime library selection
Replace manual compiler flag manipulation with CMAKE_MSVC_RUNTIME_LIBRARY variable. Bump minimum CMake version to 3.15 for policy support. Default behavior remains /MT (static runtime). Users can override by setting CMAKE_MSVC_RUNTIME_LIBRARY before configuring. Resolves #2117
1 parent c98f547 commit 2d7e537

File tree

4 files changed

+16
-23
lines changed

4 files changed

+16
-23
lines changed

CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1-
cmake_minimum_required( VERSION 3.10 FATAL_ERROR )
1+
cmake_minimum_required( VERSION 3.15 FATAL_ERROR )
22
set( CMAKE_VERBOSE_MAKEFILE ON )
33

4+
if( POLICY CMP0091 )
5+
cmake_policy( SET CMP0091 NEW )
6+
endif()
7+
48
# Configure the Android toolchain before the project start
59
if( CINDER_TARGET )
610
string( TOLOWER "${CINDER_TARGET}" CINDER_TARGET_LOWER )

proj/cmake/libcinder_configure.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cmake_minimum_required( VERSION 3.10 FATAL_ERROR )
1+
cmake_minimum_required( VERSION 3.15 FATAL_ERROR )
22

33
ci_log_v( "Building Cinder for ${CINDER_TARGET}" )
44

proj/cmake/modules/cinderMakeApp.cmake

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -110,17 +110,11 @@ function( ci_make_app )
110110
endif()
111111
elseif( CINDER_MSW )
112112
if( MSVC )
113-
# Override the default /MD with /MT
114-
foreach(
115-
flag_var
116-
CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
117-
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO
118-
)
119-
if( ${flag_var} MATCHES "/MD" )
120-
string( REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}" )
121-
set( "${flag_var}" "${${flag_var}}" PARENT_SCOPE )
122-
endif()
123-
endforeach()
113+
# Default to static runtime (/MT) unless user specifies otherwise
114+
if( NOT DEFINED CMAKE_MSVC_RUNTIME_LIBRARY )
115+
set( CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>" )
116+
endif()
117+
124118
# Force synchronous PDB writes
125119
add_compile_options( /FS )
126120
# Force multiprocess compilation

proj/cmake/platform_msw.cmake

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -110,16 +110,11 @@ list( APPEND CINDER_INCLUDE_SYSTEM_PRIVATE
110110
list( APPEND CINDER_DEFINES "_LIB;UNICODE;_UNICODE;NOMINMAX;_WIN32_WINNT=0x0601;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS" )
111111

112112
if( MSVC )
113-
# Override the default /MD with /MT
114-
foreach(
115-
flag_var
116-
CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
117-
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO
118-
)
119-
if( ${flag_var} MATCHES "/MD" )
120-
string( REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}" )
121-
endif()
122-
endforeach()
113+
# Default to static runtime (/MT) unless user specifies otherwise
114+
if( NOT DEFINED CMAKE_MSVC_RUNTIME_LIBRARY )
115+
set( CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>" )
116+
endif()
117+
123118
# Force synchronous PDB writes
124119
add_compile_options( /FS )
125120
# Force multiprocess compilation

0 commit comments

Comments
 (0)