VS: Delay getting platform name in local generator
Ask the global generator during generation instead of trying to store it up front. Later the global generator may not know the platform name when it is creating the local generator.
This commit is contained in:
parent
e7fdb44b1b
commit
7a526c35f6
|
@ -168,7 +168,6 @@ cmLocalGenerator *cmGlobalVisualStudio10Generator::CreateLocalGenerator()
|
|||
{
|
||||
cmLocalVisualStudio10Generator* lg =
|
||||
new cmLocalVisualStudio10Generator(cmLocalVisualStudioGenerator::VS10);
|
||||
lg->SetPlatformName(this->GetPlatformName());
|
||||
lg->SetGlobalGenerator(this);
|
||||
return lg;
|
||||
}
|
||||
|
|
|
@ -147,7 +147,6 @@ cmLocalGenerator *cmGlobalVisualStudio11Generator::CreateLocalGenerator()
|
|||
{
|
||||
cmLocalVisualStudio10Generator* lg =
|
||||
new cmLocalVisualStudio10Generator(cmLocalVisualStudioGenerator::VS11);
|
||||
lg->SetPlatformName(this->GetPlatformName());
|
||||
lg->SetGlobalGenerator(this);
|
||||
return lg;
|
||||
}
|
||||
|
|
|
@ -127,7 +127,6 @@ cmLocalGenerator *cmGlobalVisualStudio12Generator::CreateLocalGenerator()
|
|||
{
|
||||
cmLocalVisualStudio10Generator* lg =
|
||||
new cmLocalVisualStudio10Generator(cmLocalVisualStudioGenerator::VS12);
|
||||
lg->SetPlatformName(this->GetPlatformName());
|
||||
lg->SetGlobalGenerator(this);
|
||||
return lg;
|
||||
}
|
||||
|
|
|
@ -108,7 +108,6 @@ cmLocalGenerator *cmGlobalVisualStudio14Generator::CreateLocalGenerator()
|
|||
{
|
||||
cmLocalVisualStudio10Generator* lg =
|
||||
new cmLocalVisualStudio10Generator(cmLocalVisualStudioGenerator::VS14);
|
||||
lg->SetPlatformName(this->GetPlatformName());
|
||||
lg->SetGlobalGenerator(this);
|
||||
return lg;
|
||||
}
|
||||
|
|
|
@ -126,7 +126,6 @@ cmLocalGenerator *cmGlobalVisualStudio8Generator::CreateLocalGenerator()
|
|||
{
|
||||
cmLocalVisualStudio7Generator *lg =
|
||||
new cmLocalVisualStudio7Generator(cmLocalVisualStudioGenerator::VS8);
|
||||
lg->SetPlatformName(this->GetPlatformName());
|
||||
lg->SetExtraFlagTable(this->GetExtraFlagTableVS8());
|
||||
lg->SetGlobalGenerator(this);
|
||||
return lg;
|
||||
|
|
|
@ -115,7 +115,6 @@ cmLocalGenerator *cmGlobalVisualStudio9Generator::CreateLocalGenerator()
|
|||
{
|
||||
cmLocalVisualStudio7Generator *lg
|
||||
= new cmLocalVisualStudio7Generator(cmLocalVisualStudioGenerator::VS9);
|
||||
lg->SetPlatformName(this->GetPlatformName());
|
||||
lg->SetExtraFlagTable(this->GetExtraFlagTableVS8());
|
||||
lg->SetGlobalGenerator(this);
|
||||
return lg;
|
||||
|
|
|
@ -48,7 +48,6 @@ extern cmVS7FlagTable cmLocalVisualStudio7GeneratorFlagTable[];
|
|||
cmLocalVisualStudio7Generator::cmLocalVisualStudio7Generator(VSVersion v):
|
||||
cmLocalVisualStudioGenerator(v)
|
||||
{
|
||||
this->PlatformName = "Win32";
|
||||
this->ExtraFlagTable = 0;
|
||||
this->Internal = new cmLocalVisualStudio7GeneratorInternals(this);
|
||||
}
|
||||
|
@ -647,8 +646,11 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout,
|
|||
{
|
||||
mfcFlag = "0";
|
||||
}
|
||||
cmGlobalVisualStudio7Generator* gg =
|
||||
static_cast<cmGlobalVisualStudio7Generator*>(this->GlobalGenerator);
|
||||
fout << "\t\t<Configuration\n"
|
||||
<< "\t\t\tName=\"" << configName << "|" << this->PlatformName << "\"\n"
|
||||
<< "\t\t\tName=\"" << configName
|
||||
<< "|" << gg->GetPlatformName() << "\"\n"
|
||||
<< "\t\t\tOutputDirectory=\"" << configName << "\"\n";
|
||||
// This is an internal type to Visual Studio, it seems that:
|
||||
// 4 == static library
|
||||
|
@ -896,11 +898,11 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout,
|
|||
}
|
||||
fout << "\"\n";
|
||||
fout << "\t\t\t\tMkTypLibCompatible=\"false\"\n";
|
||||
if( this->PlatformName == "x64" )
|
||||
if( gg->GetPlatformName() == "x64" )
|
||||
{
|
||||
fout << "\t\t\t\tTargetEnvironment=\"3\"\n";
|
||||
}
|
||||
else if( this->PlatformName == "ia64" )
|
||||
else if( gg->GetPlatformName() == "ia64" )
|
||||
{
|
||||
fout << "\t\t\t\tTargetEnvironment=\"2\"\n";
|
||||
}
|
||||
|
@ -1640,6 +1642,8 @@ bool cmLocalVisualStudio7Generator
|
|||
std::ostream &fout, const std::string& libName,
|
||||
std::vector<std::string> *configs)
|
||||
{
|
||||
cmGlobalVisualStudio7Generator* gg =
|
||||
static_cast<cmGlobalVisualStudio7Generator *>(this->GlobalGenerator);
|
||||
const std::vector<const cmSourceFile *> &sourceFiles =
|
||||
sg->GetSourceFiles();
|
||||
std::vector<cmSourceGroup> const& children = sg->GetGroupChildren();
|
||||
|
@ -1730,7 +1734,7 @@ bool cmLocalVisualStudio7Generator
|
|||
cmLVS7GFileConfig const& fc = fci->second;
|
||||
fout << "\t\t\t\t<FileConfiguration\n"
|
||||
<< "\t\t\t\t\tName=\"" << fci->first
|
||||
<< "|" << this->PlatformName << "\"";
|
||||
<< "|" << gg->GetPlatformName() << "\"";
|
||||
if(fc.ExcludedFromBuild)
|
||||
{
|
||||
fout << " ExcludedFromBuild=\"true\"";
|
||||
|
@ -1800,6 +1804,9 @@ WriteCustomRule(std::ostream& fout,
|
|||
const cmCustomCommand& command,
|
||||
FCInfo& fcinfo)
|
||||
{
|
||||
cmGlobalVisualStudio7Generator* gg =
|
||||
static_cast<cmGlobalVisualStudio7Generator *>(this->GlobalGenerator);
|
||||
|
||||
// Write the rule for each configuration.
|
||||
std::vector<std::string>::iterator i;
|
||||
std::vector<std::string> *configs =
|
||||
|
@ -1820,7 +1827,8 @@ WriteCustomRule(std::ostream& fout,
|
|||
cmCustomCommandGenerator ccg(command, *i, this->Makefile);
|
||||
cmLVS7GFileConfig const& fc = fcinfo.FileConfigMap[*i];
|
||||
fout << "\t\t\t\t<FileConfiguration\n";
|
||||
fout << "\t\t\t\t\tName=\"" << *i << "|" << this->PlatformName << "\">\n";
|
||||
fout << "\t\t\t\t\tName=\"" << *i << "|"
|
||||
<< gg->GetPlatformName() << "\">\n";
|
||||
if(!fc.CompileFlags.empty())
|
||||
{
|
||||
fout << "\t\t\t\t\t<Tool\n"
|
||||
|
@ -2030,7 +2038,7 @@ cmLocalVisualStudio7Generator
|
|||
fout<< "\tKeyword=\"" << keyword << "\">\n"
|
||||
<< "\tProjectGUID=\"{" << gg->GetGUID(libName.c_str()) << "}\">\n"
|
||||
<< "\t<Platforms>\n"
|
||||
<< "\t\t<Platform\n\t\t\tName=\"" << this->PlatformName << "\"/>\n"
|
||||
<< "\t\t<Platform\n\t\t\tName=\"" << gg->GetPlatformName() << "\"/>\n"
|
||||
<< "\t</Platforms>\n";
|
||||
}
|
||||
|
||||
|
@ -2085,7 +2093,7 @@ cmLocalVisualStudio7Generator::WriteProjectStart(std::ostream& fout,
|
|||
}
|
||||
fout << "\tKeyword=\"" << keyword << "\">\n"
|
||||
<< "\t<Platforms>\n"
|
||||
<< "\t\t<Platform\n\t\t\tName=\"" << this->PlatformName << "\"/>\n"
|
||||
<< "\t\t<Platform\n\t\t\tName=\"" << gg->GetPlatformName() << "\"/>\n"
|
||||
<< "\t</Platforms>\n";
|
||||
}
|
||||
|
||||
|
|
|
@ -53,8 +53,6 @@ public:
|
|||
*/
|
||||
void SetBuildType(BuildType,const std::string& name);
|
||||
|
||||
void SetPlatformName(const std::string& n) { this->PlatformName = n;}
|
||||
|
||||
void SetExtraFlagTable(cmVS7FlagTable const* table)
|
||||
{ this->ExtraFlagTable = table; }
|
||||
virtual std::string GetTargetDirectory(cmTarget const&) const;
|
||||
|
@ -124,7 +122,6 @@ private:
|
|||
std::string ModuleDefinitionFile;
|
||||
bool FortranProject;
|
||||
bool WindowsCEProject;
|
||||
std::string PlatformName; // Win32 or x64
|
||||
cmLocalVisualStudio7GeneratorInternals* Internal;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue