mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-16 14:08:35 +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));
|
||||
|
||||
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();
|
||||
return true;
|
||||
}
|
||||
@@ -2358,12 +2363,9 @@ void cmVisualStudio10TargetGenerator::WriteRCOptions(
|
||||
}
|
||||
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]);
|
||||
rcOptions.OutputPreprocessorDefinitions(*this->BuildFileStream, " ",
|
||||
"\n", "RC");
|
||||
rcOptions.AppendFlag("AdditionalIncludeDirectories", includes);
|
||||
rcOptions.AppendFlag("AdditionalIncludeDirectories",
|
||||
"%(AdditionalIncludeDirectories)");
|
||||
|
Reference in New Issue
Block a user