mirror of
https://github.com/reactos/CMake.git
synced 2025-01-31 08:52:21 +00:00
VS: Fix quoting of special characters in cmake re-run check commands
Fix our calls to `AddCustomCommandToOutput` for adding cmake re-run check commands to disable old-style quoting in favor of the full quoting logic. This is necessary when paths contain special characters like `&` that old-style quoting logic does not handle. This also requires us to expand the `$(SolutionPath)` placeholder explicitly because otherwise its expanded value will no longer be quoted correctly. As a side effect, this fixes the value in VS 10 and above where the placeholder may be undefined when driving the build through MSBuild without the `.sln` file. Reported-by: Steven Cook <sc@harshbutfair.org> Fixes: #16585
This commit is contained in:
parent
6286d26ca6
commit
f8f3cb8d65
@ -298,7 +298,9 @@ bool cmGlobalVisualStudio8Generator::AddCheckTarget()
|
||||
commandLine.push_back("--check-stamp-list");
|
||||
commandLine.push_back(stampList.c_str());
|
||||
commandLine.push_back("--vs-solution-file");
|
||||
commandLine.push_back("\"$(SolutionPath)\"");
|
||||
std::string const sln = std::string(lg->GetBinaryDirectory()) + "/" +
|
||||
lg->GetProjectName() + ".sln";
|
||||
commandLine.push_back(sln);
|
||||
cmCustomCommandLines commandLines;
|
||||
commandLines.push_back(commandLine);
|
||||
|
||||
@ -310,7 +312,7 @@ bool cmGlobalVisualStudio8Generator::AddCheckTarget()
|
||||
std::vector<std::string> no_byproducts;
|
||||
if (cmSourceFile* file = mf->AddCustomCommandToOutput(
|
||||
stamps, no_byproducts, listFiles, no_main_dependency, commandLines,
|
||||
"Checking Build System", no_working_directory, true)) {
|
||||
"Checking Build System", no_working_directory, true, false)) {
|
||||
gt->AddSource(file->GetFullPath());
|
||||
} else {
|
||||
cmSystemTools::Error("Error adding rule for ", stamps[0].c_str());
|
||||
|
@ -260,9 +260,7 @@ cmSourceFile* cmLocalVisualStudio7Generator::CreateVCProjBuildRule()
|
||||
args += this->GetBinaryDirectory();
|
||||
commandLine.push_back(args);
|
||||
commandLine.push_back("--check-stamp-file");
|
||||
std::string stampFilename = this->ConvertToOutputFormat(
|
||||
cmSystemTools::CollapseFullPath(stampName), cmOutputConverter::SHELL);
|
||||
commandLine.push_back(stampFilename.c_str());
|
||||
commandLine.push_back(stampName);
|
||||
|
||||
std::vector<std::string> const& listFiles = this->Makefile->GetListFiles();
|
||||
|
||||
@ -273,7 +271,7 @@ cmSourceFile* cmLocalVisualStudio7Generator::CreateVCProjBuildRule()
|
||||
cmSystemTools::CollapseFullPath(stampName.c_str());
|
||||
this->Makefile->AddCustomCommandToOutput(
|
||||
fullpathStampName.c_str(), listFiles, makefileIn.c_str(), commandLines,
|
||||
comment.c_str(), no_working_directory, true);
|
||||
comment.c_str(), no_working_directory, true, false);
|
||||
if (cmSourceFile* file = this->Makefile->GetSource(makefileIn.c_str())) {
|
||||
return file;
|
||||
} else {
|
||||
|
Loading…
x
Reference in New Issue
Block a user