cmVisualStudioGeneratorOptions: specify indentation with integer

This commit is contained in:
Vitaly Stakhovsky
2018-04-25 11:01:37 -04:00
parent 83e3b1497d
commit 7d407b438d
5 changed files with 68 additions and 68 deletions

View File

@@ -812,10 +812,9 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(
<< "\\$(ConfigurationName)\"\n"; << "\\$(ConfigurationName)\"\n";
} }
targetOptions.OutputAdditionalIncludeDirectories( targetOptions.OutputAdditionalIncludeDirectories(
fout, "\t\t\t\t", this->FortranProject ? "Fortran" : langForClCompile); fout, 4, this->FortranProject ? "Fortran" : langForClCompile);
targetOptions.OutputFlagMap(fout, "\t\t\t\t"); targetOptions.OutputFlagMap(fout, 4);
targetOptions.OutputPreprocessorDefinitions(fout, "\t\t\t\t", targetOptions.OutputPreprocessorDefinitions(fout, 4, langForClCompile);
langForClCompile);
fout << "\t\t\t\tObjectFile=\"$(IntDir)\\\"\n"; fout << "\t\t\t\tObjectFile=\"$(IntDir)\\\"\n";
if (target->GetType() <= cmStateEnums::OBJECT_LIBRARY) { if (target->GetType() <= cmStateEnums::OBJECT_LIBRARY) {
// Specify the compiler program database file if configured. // Specify the compiler program database file if configured.
@@ -834,11 +833,10 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(
"\t\t\t\tName=\"MASM\"\n" "\t\t\t\tName=\"MASM\"\n"
; ;
/* clang-format on */ /* clang-format on */
targetOptions.OutputAdditionalIncludeDirectories(fout, "\t\t\t\t", targetOptions.OutputAdditionalIncludeDirectories(fout, 4, "ASM_MASM");
"ASM_MASM");
// Use same preprocessor definitions as VCCLCompilerTool. // Use same preprocessor definitions as VCCLCompilerTool.
targetOptions.OutputPreprocessorDefinitions(fout, "\t\t\t\t", "ASM_MASM"); targetOptions.OutputPreprocessorDefinitions(fout, 4, "ASM_MASM");
masmOptions.OutputFlagMap(fout, "\t\t\t\t"); masmOptions.OutputFlagMap(fout, 4);
/* clang-format off */ /* clang-format off */
fout << fout <<
"\t\t\t\tObjectFile=\"$(IntDir)\\\"\n" "\t\t\t\tObjectFile=\"$(IntDir)\\\"\n"
@@ -855,16 +853,16 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(
tool = "VFResourceCompilerTool"; tool = "VFResourceCompilerTool";
} }
fout << "\t\t\t<Tool\n\t\t\t\tName=\"" << tool << "\"\n"; fout << "\t\t\t<Tool\n\t\t\t\tName=\"" << tool << "\"\n";
targetOptions.OutputAdditionalIncludeDirectories(fout, "\t\t\t\t", "RC"); targetOptions.OutputAdditionalIncludeDirectories(fout, 4, "RC");
// add the -D flags to the RC tool // add the -D flags to the RC tool
targetOptions.OutputPreprocessorDefinitions(fout, "\t\t\t\t", "RC"); targetOptions.OutputPreprocessorDefinitions(fout, 4, "RC");
fout << "\t\t\t/>\n"; fout << "\t\t\t/>\n";
tool = "VCMIDLTool"; tool = "VCMIDLTool";
if (this->FortranProject) { if (this->FortranProject) {
tool = "VFMIDLTool"; tool = "VFMIDLTool";
} }
fout << "\t\t\t<Tool\n\t\t\t\tName=\"" << tool << "\"\n"; fout << "\t\t\t<Tool\n\t\t\t\tName=\"" << tool << "\"\n";
targetOptions.OutputAdditionalIncludeDirectories(fout, "\t\t\t\t", "MIDL"); targetOptions.OutputAdditionalIncludeDirectories(fout, 4, "MIDL");
fout << "\t\t\t\tMkTypLibCompatible=\"false\"\n"; fout << "\t\t\t\tMkTypLibCompatible=\"false\"\n";
if (gg->GetPlatformName() == "x64") { if (gg->GetPlatformName() == "x64") {
fout << "\t\t\t\tTargetEnvironment=\"3\"\n"; fout << "\t\t\t\tTargetEnvironment=\"3\"\n";
@@ -1089,7 +1087,7 @@ void cmLocalVisualStudio7Generator::OutputBuildTool(
fout << "\t\t\t\tOutputFile=\"" fout << "\t\t\t\tOutputFile=\""
<< this->ConvertToXMLOutputPathSingle(temp.c_str()) << "\"\n"; << this->ConvertToXMLOutputPathSingle(temp.c_str()) << "\"\n";
this->WriteTargetVersionAttribute(fout, target); this->WriteTargetVersionAttribute(fout, target);
linkOptions.OutputFlagMap(fout, "\t\t\t\t"); linkOptions.OutputFlagMap(fout, 4);
fout << "\t\t\t\tAdditionalLibraryDirectories=\""; fout << "\t\t\t\tAdditionalLibraryDirectories=\"";
this->OutputLibraryDirectories(fout, cli.GetDirectories()); this->OutputLibraryDirectories(fout, cli.GetDirectories());
fout << "\"\n"; fout << "\"\n";
@@ -1174,7 +1172,7 @@ void cmLocalVisualStudio7Generator::OutputBuildTool(
fout << "\t\t\t\tOutputFile=\"" fout << "\t\t\t\tOutputFile=\""
<< this->ConvertToXMLOutputPathSingle(temp.c_str()) << "\"\n"; << this->ConvertToXMLOutputPathSingle(temp.c_str()) << "\"\n";
this->WriteTargetVersionAttribute(fout, target); this->WriteTargetVersionAttribute(fout, target);
linkOptions.OutputFlagMap(fout, "\t\t\t\t"); linkOptions.OutputFlagMap(fout, 4);
fout << "\t\t\t\tAdditionalLibraryDirectories=\""; fout << "\t\t\t\tAdditionalLibraryDirectories=\"";
this->OutputLibraryDirectories(fout, cli.GetDirectories()); this->OutputLibraryDirectories(fout, cli.GetDirectories());
fout << "\"\n"; fout << "\"\n";
@@ -1711,12 +1709,11 @@ bool cmLocalVisualStudio7Generator::WriteGroup(
std::vector<std::string> includes; std::vector<std::string> includes;
this->AppendIncludeDirectories(includes, fc.IncludeDirs, **sf); this->AppendIncludeDirectories(includes, fc.IncludeDirs, **sf);
fileOptions.AddIncludes(includes); fileOptions.AddIncludes(includes);
fileOptions.OutputFlagMap(fout, "\t\t\t\t\t"); fileOptions.OutputFlagMap(fout, 5);
fileOptions.OutputAdditionalIncludeDirectories( fileOptions.OutputAdditionalIncludeDirectories(
fout, "\t\t\t\t\t", fout, 5,
ppLang == "CXX" && this->FortranProject ? "Fortran" : ppLang); ppLang == "CXX" && this->FortranProject ? "Fortran" : ppLang);
fileOptions.OutputPreprocessorDefinitions(fout, "\t\t\t\t\t", fileOptions.OutputPreprocessorDefinitions(fout, 5, ppLang);
ppLang);
} }
if (!fc.AdditionalDeps.empty()) { if (!fc.AdditionalDeps.empty()) {
fout << "\t\t\t\t\tAdditionalDependencies=\"" << fc.AdditionalDeps fout << "\t\t\t\t\tAdditionalDependencies=\"" << fc.AdditionalDeps
@@ -2092,11 +2089,15 @@ std::string cmLocalVisualStudio7Generator::ConvertToXMLOutputPathSingle(
return ret; return ret;
} }
void cmVS7GeneratorOptions::OutputFlag(std::ostream& fout, const char* indent, void cmVS7GeneratorOptions::OutputFlag(std::ostream& fout, int indent,
const char* tag, const char* flag,
const std::string& content) const std::string& content)
{ {
fout << indent << tag << "=\""; fout.fill('\t');
fout.width(indent);
// write an empty string to get the fill level indent to print
fout << "";
fout << flag << "=\"";
fout << cmLocalVisualStudio7GeneratorEscapeForXML(content); fout << cmLocalVisualStudio7GeneratorEscapeForXML(content);
fout << "\"\n"; fout << "\"\n";
} }

View File

@@ -30,7 +30,7 @@ public:
: cmVisualStudioGeneratorOptions(lg, tool, table, extraTable) : cmVisualStudioGeneratorOptions(lg, tool, table, extraTable)
{ {
} }
void OutputFlag(std::ostream& fout, const char* indent, const char* tag, void OutputFlag(std::ostream& fout, int indent, const char* tag,
const std::string& content) override; const std::string& content) override;
}; };

View File

@@ -99,17 +99,20 @@ public:
{ {
} }
void OutputFlag(std::ostream& fout, const char* indent, const char* tag, void OutputFlag(std::ostream& fout, int indent, const char* tag,
const std::string& content) override const std::string& content) override
{ {
if (!this->GetConfiguration().empty()) { if (!this->GetConfiguration().empty()) {
// if there are configuration specific flags, then // if there are configuration specific flags, then
// use the configuration specific tag for PreprocessorDefinitions // use the configuration specific tag for PreprocessorDefinitions
fout << indent;
this->TargetGenerator->WritePlatformConfigTag( this->TargetGenerator->WritePlatformConfigTag(
tag, this->GetConfiguration(), 0); tag, this->GetConfiguration(), indent);
} else { } else {
fout << indent << "<" << tag << ">"; fout.fill(' ');
fout.width(indent * 2);
// write an empty string to get the fill level indent to print
fout << "";
fout << "<" << tag << ">";
} }
fout << cmVS10EscapeXML(content); fout << cmVS10EscapeXML(content);
fout << "</" << tag << ">\n"; fout << "</" << tag << ">\n";
@@ -1144,7 +1147,7 @@ void cmVisualStudio10TargetGenerator::WriteMSToolConfigurationValuesManaged(
<< ".exe</StartProgram>\n"; << ".exe</StartProgram>\n";
} }
o.OutputFlagMap(*this->BuildFileStream, " "); o.OutputFlagMap(*this->BuildFileStream, 2);
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@@ -2163,11 +2166,10 @@ void cmVisualStudio10TargetGenerator::OutputSourceSpecificFlags(
clOptions.AddIncludes(includeList); clOptions.AddIncludes(includeList);
clOptions.SetConfiguration(config); clOptions.SetConfiguration(config);
clOptions.PrependInheritedString("AdditionalOptions"); clOptions.PrependInheritedString("AdditionalOptions");
clOptions.OutputAdditionalIncludeDirectories(*this->BuildFileStream, clOptions.OutputAdditionalIncludeDirectories(*this->BuildFileStream, 3,
" ", lang); lang);
clOptions.OutputFlagMap(*this->BuildFileStream, " "); clOptions.OutputFlagMap(*this->BuildFileStream, 3);
clOptions.OutputPreprocessorDefinitions(*this->BuildFileStream, " ", clOptions.OutputPreprocessorDefinitions(*this->BuildFileStream, 3, lang);
lang);
} }
} }
if (this->IsXamlSource(source->GetFullPath())) { if (this->IsXamlSource(source->GetFullPath())) {
@@ -2587,10 +2589,10 @@ void cmVisualStudio10TargetGenerator::WriteClOptions(
} }
this->WriteString("<ClCompile>\n", 2); this->WriteString("<ClCompile>\n", 2);
clOptions.PrependInheritedString("AdditionalOptions"); clOptions.PrependInheritedString("AdditionalOptions");
clOptions.OutputAdditionalIncludeDirectories( clOptions.OutputAdditionalIncludeDirectories(*this->BuildFileStream, 3,
*this->BuildFileStream, " ", this->LangForClCompile); this->LangForClCompile);
clOptions.OutputFlagMap(*this->BuildFileStream, " "); clOptions.OutputFlagMap(*this->BuildFileStream, 3);
clOptions.OutputPreprocessorDefinitions(*this->BuildFileStream, " ", clOptions.OutputPreprocessorDefinitions(*this->BuildFileStream, 3,
this->LangForClCompile); this->LangForClCompile);
if (this->NsightTegra) { if (this->NsightTegra) {
@@ -2676,12 +2678,11 @@ void cmVisualStudio10TargetGenerator::WriteRCOptions(
this->WriteString("<ResourceCompile>\n", 2); this->WriteString("<ResourceCompile>\n", 2);
Options& rcOptions = *(this->RcOptions[configName]); Options& rcOptions = *(this->RcOptions[configName]);
rcOptions.OutputPreprocessorDefinitions(*this->BuildFileStream, " ", rcOptions.OutputPreprocessorDefinitions(*this->BuildFileStream, 3, "RC");
"RC"); rcOptions.OutputAdditionalIncludeDirectories(*this->BuildFileStream, 3,
rcOptions.OutputAdditionalIncludeDirectories(*this->BuildFileStream, "RC");
" ", "RC");
rcOptions.PrependInheritedString("AdditionalOptions"); rcOptions.PrependInheritedString("AdditionalOptions");
rcOptions.OutputFlagMap(*this->BuildFileStream, " "); rcOptions.OutputFlagMap(*this->BuildFileStream, 3);
this->WriteString("</ResourceCompile>\n", 2); this->WriteString("</ResourceCompile>\n", 2);
} }
@@ -2826,12 +2827,11 @@ void cmVisualStudio10TargetGenerator::WriteCudaOptions(
this->WriteString("<CudaCompile>\n", 2); this->WriteString("<CudaCompile>\n", 2);
Options& cudaOptions = *(this->CudaOptions[configName]); Options& cudaOptions = *(this->CudaOptions[configName]);
cudaOptions.OutputAdditionalIncludeDirectories(*this->BuildFileStream, cudaOptions.OutputAdditionalIncludeDirectories(*this->BuildFileStream, 3,
" ", "CUDA"); "CUDA");
cudaOptions.OutputPreprocessorDefinitions(*this->BuildFileStream, " ", cudaOptions.OutputPreprocessorDefinitions(*this->BuildFileStream, 3, "CUDA");
"CUDA");
cudaOptions.PrependInheritedString("AdditionalOptions"); cudaOptions.PrependInheritedString("AdditionalOptions");
cudaOptions.OutputFlagMap(*this->BuildFileStream, " "); cudaOptions.OutputFlagMap(*this->BuildFileStream, 3);
this->WriteString("</CudaCompile>\n", 2); this->WriteString("</CudaCompile>\n", 2);
} }
@@ -2900,7 +2900,7 @@ void cmVisualStudio10TargetGenerator::WriteCudaLinkOptions(
this->WriteString("<CudaLink>\n", 2); this->WriteString("<CudaLink>\n", 2);
Options& cudaLinkOptions = *(this->CudaLinkOptions[configName]); Options& cudaLinkOptions = *(this->CudaLinkOptions[configName]);
cudaLinkOptions.OutputFlagMap(*this->BuildFileStream, " "); cudaLinkOptions.OutputFlagMap(*this->BuildFileStream, 3);
this->WriteString("</CudaLink>\n", 2); this->WriteString("</CudaLink>\n", 2);
} }
@@ -2951,14 +2951,14 @@ void cmVisualStudio10TargetGenerator::WriteMasmOptions(
// Preprocessor definitions and includes are shared with clOptions. // Preprocessor definitions and includes are shared with clOptions.
Options& clOptions = *(this->ClOptions[configName]); Options& clOptions = *(this->ClOptions[configName]);
clOptions.OutputPreprocessorDefinitions(*this->BuildFileStream, " ", clOptions.OutputPreprocessorDefinitions(*this->BuildFileStream, 3,
"ASM_MASM"); "ASM_MASM");
Options& masmOptions = *(this->MasmOptions[configName]); Options& masmOptions = *(this->MasmOptions[configName]);
masmOptions.OutputAdditionalIncludeDirectories(*this->BuildFileStream, masmOptions.OutputAdditionalIncludeDirectories(*this->BuildFileStream, 3,
" ", "ASM_MASM"); "ASM_MASM");
masmOptions.PrependInheritedString("AdditionalOptions"); masmOptions.PrependInheritedString("AdditionalOptions");
masmOptions.OutputFlagMap(*this->BuildFileStream, " "); masmOptions.OutputFlagMap(*this->BuildFileStream, 3);
this->WriteString("</MASM>\n", 2); this->WriteString("</MASM>\n", 2);
} }
@@ -3012,16 +3012,16 @@ void cmVisualStudio10TargetGenerator::WriteNasmOptions(
std::vector<std::string> includes = std::vector<std::string> includes =
this->GetIncludes(configName, "ASM_NASM"); this->GetIncludes(configName, "ASM_NASM");
Options& nasmOptions = *(this->NasmOptions[configName]); Options& nasmOptions = *(this->NasmOptions[configName]);
nasmOptions.OutputAdditionalIncludeDirectories(*this->BuildFileStream, nasmOptions.OutputAdditionalIncludeDirectories(*this->BuildFileStream, 3,
" ", "ASM_NASM"); "ASM_NASM");
nasmOptions.OutputFlagMap(*this->BuildFileStream, " "); nasmOptions.OutputFlagMap(*this->BuildFileStream, 3);
nasmOptions.PrependInheritedString("AdditionalOptions"); nasmOptions.PrependInheritedString("AdditionalOptions");
nasmOptions.OutputPreprocessorDefinitions(*this->BuildFileStream, " ", nasmOptions.OutputPreprocessorDefinitions(*this->BuildFileStream, 3,
"ASM_NASM"); "ASM_NASM");
// Preprocessor definitions and includes are shared with clOptions. // Preprocessor definitions and includes are shared with clOptions.
Options& clOptions = *(this->ClOptions[configName]); Options& clOptions = *(this->ClOptions[configName]);
clOptions.OutputPreprocessorDefinitions(*this->BuildFileStream, " ", clOptions.OutputPreprocessorDefinitions(*this->BuildFileStream, 3,
"ASM_NASM"); "ASM_NASM");
this->WriteString("</NASM>\n", 2); this->WriteString("</NASM>\n", 2);
@@ -3045,7 +3045,7 @@ void cmVisualStudio10TargetGenerator::WriteLibOptions(
gg->GetLibFlagTable(), this); gg->GetLibFlagTable(), this);
libOptions.Parse(libflags.c_str()); libOptions.Parse(libflags.c_str());
libOptions.PrependInheritedString("AdditionalOptions"); libOptions.PrependInheritedString("AdditionalOptions");
libOptions.OutputFlagMap(*this->BuildFileStream, " "); libOptions.OutputFlagMap(*this->BuildFileStream, 3);
this->WriteString("</Lib>\n", 2); this->WriteString("</Lib>\n", 2);
} }
@@ -3473,7 +3473,7 @@ void cmVisualStudio10TargetGenerator::WriteLinkOptions(
this->WriteString("<Link>\n", 2); this->WriteString("<Link>\n", 2);
linkOptions.PrependInheritedString("AdditionalOptions"); linkOptions.PrependInheritedString("AdditionalOptions");
linkOptions.OutputFlagMap(*this->BuildFileStream, " "); linkOptions.OutputFlagMap(*this->BuildFileStream, 3);
this->WriteString("</Link>\n", 2); this->WriteString("</Link>\n", 2);
if (!this->GlobalGenerator->NeedLinkLibraryDependencies( if (!this->GlobalGenerator->NeedLinkLibraryDependencies(

View File

@@ -422,7 +422,7 @@ const std::string& cmVisualStudioGeneratorOptions::GetConfiguration() const
} }
void cmVisualStudioGeneratorOptions::OutputPreprocessorDefinitions( void cmVisualStudioGeneratorOptions::OutputPreprocessorDefinitions(
std::ostream& fout, const char* prefix, const std::string& lang) std::ostream& fout, int indent, const std::string& lang)
{ {
if (this->Defines.empty()) { if (this->Defines.empty()) {
return; return;
@@ -460,11 +460,11 @@ void cmVisualStudioGeneratorOptions::OutputPreprocessorDefinitions(
oss << ";%(" << tag << ")"; oss << ";%(" << tag << ")";
} }
this->OutputFlag(fout, prefix, tag, oss.str()); this->OutputFlag(fout, indent, tag, oss.str());
} }
void cmVisualStudioGeneratorOptions::OutputAdditionalIncludeDirectories( void cmVisualStudioGeneratorOptions::OutputAdditionalIncludeDirectories(
std::ostream& fout, const char* prefix, const std::string& lang) std::ostream& fout, int indent, const std::string& lang)
{ {
if (this->Includes.empty()) { if (this->Includes.empty()) {
return; return;
@@ -508,11 +508,11 @@ void cmVisualStudioGeneratorOptions::OutputAdditionalIncludeDirectories(
oss << sep << "%(" << tag << ")"; oss << sep << "%(" << tag << ")";
} }
this->OutputFlag(fout, prefix, tag, oss.str()); this->OutputFlag(fout, indent, tag, oss.str());
} }
void cmVisualStudioGeneratorOptions::OutputFlagMap(std::ostream& fout, void cmVisualStudioGeneratorOptions::OutputFlagMap(std::ostream& fout,
const char* indent) int indent)
{ {
for (auto const& m : this->FlagMap) { for (auto const& m : this->FlagMap) {
std::ostringstream oss; std::ostringstream oss;

View File

@@ -77,18 +77,17 @@ public:
bool IsWinRt() const; bool IsWinRt() const;
bool IsManaged() const; bool IsManaged() const;
// Write options to output. // Write options to output.
void OutputPreprocessorDefinitions(std::ostream& fout, const char* prefix, void OutputPreprocessorDefinitions(std::ostream& fout, int indent,
const std::string& lang); const std::string& lang);
void OutputAdditionalIncludeDirectories(std::ostream& fout, void OutputAdditionalIncludeDirectories(std::ostream& fout, int indent,
const char* prefix,
const std::string& lang); const std::string& lang);
void OutputFlagMap(std::ostream& fout, const char* indent); void OutputFlagMap(std::ostream& fout, int indent);
void SetConfiguration(const std::string& config); void SetConfiguration(const std::string& config);
const std::string& GetConfiguration() const; const std::string& GetConfiguration() const;
protected: protected:
virtual void OutputFlag(std::ostream& fout, const char* indent, virtual void OutputFlag(std::ostream& fout, int indent, const char* tag,
const char* tag, const std::string& content) = 0; const std::string& content) = 0;
private: private:
cmLocalVisualStudioGenerator* LocalGenerator; cmLocalVisualStudioGenerator* LocalGenerator;