From a9210a0c02dd8cc1325d2cbb5eb53e29276f7d4a Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 17 Jul 2024 11:33:29 -0400 Subject: VS: Restore support for CUDA with no optimization flags Since commit 67de5b7b82 (VS: Suppress MSBuild default settings affected by UseDebugLibraries, 2024-02-13, v3.30.0-rc1~538^2~1) we generate an empty `Optimization` element for the host compiler when there are no C or C++ optimization flags enabled. The CUDA Toolkit Visual Studio integration fails with an error if an empty string is inherited from the host compiler's `Optimization` element. If no CUDA optimization flags are specified, write an explicit empty `Optimization` element for the CUDA compiler too. Fixes: #26144 --- Source/cmVisualStudio10TargetGenerator.cxx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 0fb8bae..a3d5244 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -3880,6 +3880,14 @@ bool cmVisualStudio10TargetGenerator::ComputeCudaOptions( cudaOptions.AddFlag("CudaRuntime", "None"); } + if (this->ProjectType == VsProjectType::vcxproj && this->MSTools) { + // Suppress inheritance of host compiler optimization flags + // when the project does not specify any optimization flags for CUDA. + if (!cudaOptions.HasFlag("Optimization")) { + cudaOptions.AddFlag("Optimization", ""); + } + } + this->CudaOptions[configName] = std::move(pOptions); return true; } -- cgit v0.12