mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-05 21:31:08 -06:00
VS: Add workaround for CUDA compiler PDB location with space
CUDA Toolkit Visual Studio Integration for version 9.2 and above does
honor the `ClCompile.ProgramDataBaseFileName` field when telling `nvcc`
how to invoke `cl`. Unfortunately it does not quote paths with spaces
correctly:
-Xcompiler "... /Fd"C:\path\with space\foo.pdb" ..."
Work around this by converting the PDB location to a relative path.
Likely we could always do this, but for now make a minimal change
just for CUDA support.
Fixes: #18440
This commit is contained in:
@@ -2671,6 +2671,13 @@ void cmVisualStudio10TargetGenerator::WriteClOptions(
|
||||
// Specify the compiler program database file if configured.
|
||||
std::string pdb = this->GeneratorTarget->GetCompilePDBPath(configName);
|
||||
if (!pdb.empty()) {
|
||||
if (this->GlobalGenerator->IsCudaEnabled()) {
|
||||
// CUDA does not quote paths with spaces correctly when forwarding
|
||||
// this to the host compiler. Use a relative path to avoid spaces.
|
||||
// FIXME: We can likely do this even when CUDA is not involved,
|
||||
// but for now we will make a minimal change.
|
||||
pdb = this->ConvertPath(pdb, true);
|
||||
}
|
||||
ConvertToWindowsSlash(pdb);
|
||||
e2.Element("ProgramDataBaseFileName", pdb);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user