diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index b1135bdad6..4af668c3d2 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -12,6 +12,11 @@ cmake_policy(SET CMP0117 NEW) # Don't let cmake set a default value for CMAKE_CUDA_ARCHITECTURES cmake_policy(SET CMP0104 OLD) +# Enable Hot Reload for MSVC compilers if supported. +if (POLICY CMP0141) + cmake_policy(SET CMP0141 NEW) +endif() + # Project project(onnxruntime C CXX ASM) @@ -332,6 +337,11 @@ function(set_msvc_c_cpp_compiler_warning_level warning_level) endif() endfunction() + +if(MSVC_Z7_OVERRIDE) + set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<$:Embedded>") +endif(MSVC_Z7_OVERRIDE) + # set default MSVC warning level to 3 for external dependencies set_msvc_c_cpp_compiler_warning_level(3) @@ -722,19 +732,6 @@ if (onnxruntime_ENABLE_LAZY_TENSOR) # cleaner. endif() -if(MSVC) - # Replace /Zi and /ZI with /Z7 - if(MSVC_Z7_OVERRIDE) - foreach(flag_var - CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELWITHDEBINFO - CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELWITHDEBINFO) - if(${flag_var} MATCHES "/Z[iI]") - string(REGEX REPLACE "/Z[iI]" "/Z7" ${flag_var} "${${flag_var}}") - endif(${flag_var} MATCHES "/Z[iI]") - endforeach(flag_var) - endif(MSVC_Z7_OVERRIDE) -endif() - function(onnxruntime_set_compile_flags target_name) if (CPUINFO_SUPPORTED) onnxruntime_add_include_to_target(${target_name} cpuinfo::cpuinfo) diff --git a/cmake/external/helper_functions.cmake b/cmake/external/helper_functions.cmake index 88b46890b7..768e807b40 100644 --- a/cmake/external/helper_functions.cmake +++ b/cmake/external/helper_functions.cmake @@ -176,18 +176,6 @@ macro(onnxruntime_fetchcontent_makeavailable) set_target_properties(${subdir_target} PROPERTIES COMPILE_WARNING_AS_ERROR OFF) endif() endforeach() - if(MSVC) - # Replace /Zi and /ZI with /Z7 - if(MSVC_Z7_OVERRIDE) - foreach(flag_var - CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELWITHDEBINFO - CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELWITHDEBINFO) - if(${flag_var} MATCHES "/Z[iI]") - string(REGEX REPLACE "/Z[iI]" "/Z7" ${flag_var} "${${flag_var}}") - endif(${flag_var} MATCHES "/Z[iI]") - endforeach(flag_var) - endif(MSVC_Z7_OVERRIDE) - endif() endif() unset(__cmake_srcdir) diff --git a/cmake/onnxruntime_providers.cmake b/cmake/onnxruntime_providers.cmake index de46811f22..ad46a0e07e 100644 --- a/cmake/onnxruntime_providers.cmake +++ b/cmake/onnxruntime_providers.cmake @@ -529,10 +529,12 @@ if (onnxruntime_USE_CUDA) if (WIN32) # *.cu cannot use PCH - target_precompile_headers(onnxruntime_providers_cuda PUBLIC - "${ONNXRUNTIME_ROOT}/core/providers/cuda/cuda_pch.h" - "${ONNXRUNTIME_ROOT}/core/providers/cuda/cuda_pch.cc" - ) + if (NOT onnxruntime_BUILD_CACHE) + target_precompile_headers(onnxruntime_providers_cuda PUBLIC + "${ONNXRUNTIME_ROOT}/core/providers/cuda/cuda_pch.h" + "${ONNXRUNTIME_ROOT}/core/providers/cuda/cuda_pch.cc" + ) + endif() # minimize the Windows includes. # this avoids an issue with CUDA 11.6 where 'small' is defined in the windows and cuda headers.