cmInstallTargetGenerator: Escape generated OLD_RPATH argument

On some platforms, e.g. most ELF-based ones, RPATHs may contain keywords
that match CMake's variable syntax. To prevent them from being falsely
substituted when running the cmake_install.cmake script CMake syntax
needs to be escaped.
This commit is contained in:
Dennis Klein
2019-05-31 16:43:24 +02:00
parent 9e84c7c5e8
commit 749ce48eb5

View File

@@ -750,13 +750,14 @@ void cmInstallTargetGenerator::AddChrpathPatchRule(
return;
}
// Escape any CMake syntax in the install RPATH.
// Escape any CMake syntax in the RPATHs.
std::string escapedOldRpath = cmOutputConverter::EscapeForCMake(oldRpath);
std::string escapedNewRpath = cmOutputConverter::EscapeForCMake(newRpath);
// Write a rule to run chrpath to set the install-tree RPATH
os << indent << "file(RPATH_CHANGE\n"
<< indent << " FILE \"" << toDestDirPath << "\"\n"
<< indent << " OLD_RPATH \"" << oldRpath << "\"\n";
<< indent << " OLD_RPATH " << escapedOldRpath << "\n";
// CMP0095: ``RPATH`` entries are properly escaped in the intermediary
// CMake install script.