VS: Refactor include directory generation in .vcxproj files
Use the cmVisualStudioGeneratorOptions flag map to add the AdditionalIncludeDirectories element to the project file. Move appending of %(AdditionalIncludeDirectories) to the locations that populate the flag vectors instead of where they are written out.
This commit is contained in:
parent
8e026aa7f2
commit
5fcb42ab69
|
@ -1305,6 +1305,11 @@ bool cmVisualStudio10TargetGenerator::OutputSourceSpecificFlags(
|
|||
clOptions.AddFlag("CompileAs", compileAs);
|
||||
}
|
||||
clOptions.Parse(flags.c_str());
|
||||
if(clOptions.HasFlag("AdditionalIncludeDirectories"))
|
||||
{
|
||||
clOptions.AppendFlag("AdditionalIncludeDirectories",
|
||||
"%(AdditionalIncludeDirectories)");
|
||||
}
|
||||
clOptions.AddDefines(configDefines.c_str());
|
||||
clOptions.SetConfiguration((*config).c_str());
|
||||
clOptions.OutputAdditionalOptions(*this->BuildFileStream, " ", "");
|
||||
|
@ -1546,7 +1551,9 @@ void cmVisualStudio10TargetGenerator::WriteClOptions(
|
|||
Options& clOptions = *(this->ClOptions[configName]);
|
||||
this->WriteString("<ClCompile>\n", 2);
|
||||
clOptions.OutputAdditionalOptions(*this->BuildFileStream, " ", "");
|
||||
this->OutputIncludes(includes);
|
||||
clOptions.AppendFlag("AdditionalIncludeDirectories", includes);
|
||||
clOptions.AppendFlag("AdditionalIncludeDirectories",
|
||||
"%(AdditionalIncludeDirectories)");
|
||||
clOptions.OutputFlagMap(*this->BuildFileStream, " ");
|
||||
clOptions.OutputPreprocessorDefinitions(*this->BuildFileStream, " ",
|
||||
"\n", "CXX");
|
||||
|
@ -1577,21 +1584,6 @@ void cmVisualStudio10TargetGenerator::WriteClOptions(
|
|||
this->WriteString("</ClCompile>\n", 2);
|
||||
}
|
||||
|
||||
void cmVisualStudio10TargetGenerator::
|
||||
OutputIncludes(std::vector<std::string> const & includes)
|
||||
{
|
||||
this->WriteString("<AdditionalIncludeDirectories>", 3);
|
||||
for(std::vector<std::string>::const_iterator i = includes.begin();
|
||||
i != includes.end(); ++i)
|
||||
{
|
||||
*this->BuildFileStream << cmVS10EscapeXML(*i) << ";";
|
||||
}
|
||||
this->WriteString("%(AdditionalIncludeDirectories)"
|
||||
"</AdditionalIncludeDirectories>\n", 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool cmVisualStudio10TargetGenerator::ComputeRcOptions()
|
||||
{
|
||||
|
@ -1643,9 +1635,11 @@ WriteRCOptions(std::string const& configName,
|
|||
Options& clOptions = *(this->ClOptions[configName]);
|
||||
clOptions.OutputPreprocessorDefinitions(*this->BuildFileStream, " ",
|
||||
"\n", "RC");
|
||||
this->OutputIncludes(includes);
|
||||
|
||||
Options& rcOptions = *(this->RcOptions[configName]);
|
||||
rcOptions.AppendFlag("AdditionalIncludeDirectories", includes);
|
||||
rcOptions.AppendFlag("AdditionalIncludeDirectories",
|
||||
"%(AdditionalIncludeDirectories)");
|
||||
rcOptions.OutputFlagMap(*this->BuildFileStream, " ");
|
||||
rcOptions.OutputAdditionalOptions(*this->BuildFileStream, " ", "");
|
||||
|
||||
|
@ -1951,7 +1945,14 @@ WriteMidlOptions(std::string const& /*config*/,
|
|||
// only). Perhaps there's something to be done to make this more automatic
|
||||
// on the CMake side?
|
||||
this->WriteString("<Midl>\n", 2);
|
||||
this->OutputIncludes(includes);
|
||||
this->WriteString("<AdditionalIncludeDirectories>", 3);
|
||||
for(std::vector<std::string>::const_iterator i = includes.begin();
|
||||
i != includes.end(); ++i)
|
||||
{
|
||||
*this->BuildFileStream << cmVS10EscapeXML(*i) << ";";
|
||||
}
|
||||
this->WriteString("%(AdditionalIncludeDirectories)"
|
||||
"</AdditionalIncludeDirectories>\n", 0);
|
||||
this->WriteString("<OutputDirectory>$(IntDir)</OutputDirectory>\n", 3);
|
||||
this->WriteString("<HeaderFileName>%(Filename).h</HeaderFileName>\n", 3);
|
||||
this->WriteString(
|
||||
|
|
|
@ -83,7 +83,6 @@ private:
|
|||
void WriteLinkOptions(std::string const& config);
|
||||
void WriteMidlOptions(std::string const& config,
|
||||
std::vector<std::string> const & includes);
|
||||
void OutputIncludes(std::vector<std::string> const & includes);
|
||||
void OutputLinkIncremental(std::string const& configName);
|
||||
void WriteCustomRule(cmSourceFile const* source,
|
||||
cmCustomCommand const & command);
|
||||
|
|
|
@ -324,10 +324,6 @@ cmVisualStudioGeneratorOptions
|
|||
fout << sep << cmVisualStudio10GeneratorOptionsEscapeForXML(*i);
|
||||
sep = ";";
|
||||
}
|
||||
if (m->first == "AdditionalIncludeDirectories")
|
||||
{
|
||||
fout << sep << "%(AdditionalIncludeDirectories)";
|
||||
}
|
||||
fout << "</" << m->first << ">\n";
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue