mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-19 02:17:27 +08:00
VS: Honor preprocessor definitions in RC flags
The VS generators use the C (or CXX) preprocessor definitions for the Windows Resource Compiler tool. This causes definitions parsed out of `CMAKE_RC_FLAGS[_<CONFIG>]` variables to be dropped. Fix the implementation to preserve both. Issue: #16745
This commit is contained in:
@@ -2346,6 +2346,11 @@ bool cmVisualStudio10TargetGenerator::ComputeRcOptions(
|
|||||||
std::string(this->Makefile->GetSafeDefinition(rcConfigFlagsVar));
|
std::string(this->Makefile->GetSafeDefinition(rcConfigFlagsVar));
|
||||||
|
|
||||||
rcOptions.Parse(flags.c_str());
|
rcOptions.Parse(flags.c_str());
|
||||||
|
|
||||||
|
// For historical reasons, add the C preprocessor defines to RC.
|
||||||
|
Options& clOptions = *(this->ClOptions[configName]);
|
||||||
|
rcOptions.AddDefines(clOptions.GetDefines());
|
||||||
|
|
||||||
this->RcOptions[configName] = pOptions.release();
|
this->RcOptions[configName] = pOptions.release();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -2358,12 +2363,9 @@ void cmVisualStudio10TargetGenerator::WriteRCOptions(
|
|||||||
}
|
}
|
||||||
this->WriteString("<ResourceCompile>\n", 2);
|
this->WriteString("<ResourceCompile>\n", 2);
|
||||||
|
|
||||||
// Preprocessor definitions and includes are shared with clOptions.
|
|
||||||
Options& clOptions = *(this->ClOptions[configName]);
|
|
||||||
clOptions.OutputPreprocessorDefinitions(*this->BuildFileStream, " ",
|
|
||||||
"\n", "RC");
|
|
||||||
|
|
||||||
Options& rcOptions = *(this->RcOptions[configName]);
|
Options& rcOptions = *(this->RcOptions[configName]);
|
||||||
|
rcOptions.OutputPreprocessorDefinitions(*this->BuildFileStream, " ",
|
||||||
|
"\n", "RC");
|
||||||
rcOptions.AppendFlag("AdditionalIncludeDirectories", includes);
|
rcOptions.AppendFlag("AdditionalIncludeDirectories", includes);
|
||||||
rcOptions.AppendFlag("AdditionalIncludeDirectories",
|
rcOptions.AppendFlag("AdditionalIncludeDirectories",
|
||||||
"%(AdditionalIncludeDirectories)");
|
"%(AdditionalIncludeDirectories)");
|
||||||
|
Reference in New Issue
Block a user