Simplify cmVisualStudio10TargetGenerator using cmGeneratorTarget
Use CustomCommands and ModuleDefinitionFile computed in the latter instead of recomputing them from the original target source files.
This commit is contained in:
parent
45c2f93240
commit
62a841b80b
@ -11,6 +11,7 @@
|
|||||||
============================================================================*/
|
============================================================================*/
|
||||||
#include "cmVisualStudio10TargetGenerator.h"
|
#include "cmVisualStudio10TargetGenerator.h"
|
||||||
#include "cmGlobalVisualStudio10Generator.h"
|
#include "cmGlobalVisualStudio10Generator.h"
|
||||||
|
#include "cmGeneratorTarget.h"
|
||||||
#include "cmTarget.h"
|
#include "cmTarget.h"
|
||||||
#include "cmComputeLinkInformation.h"
|
#include "cmComputeLinkInformation.h"
|
||||||
#include "cmGeneratedFileStream.h"
|
#include "cmGeneratedFileStream.h"
|
||||||
@ -62,6 +63,7 @@ cmVisualStudio10TargetGenerator(cmTarget* target,
|
|||||||
{
|
{
|
||||||
this->GlobalGenerator = gg;
|
this->GlobalGenerator = gg;
|
||||||
this->Target = target;
|
this->Target = target;
|
||||||
|
this->GeneratorTarget = gg->GetGeneratorTarget(target);
|
||||||
this->Makefile = target->GetMakefile();
|
this->Makefile = target->GetMakefile();
|
||||||
this->LocalGenerator =
|
this->LocalGenerator =
|
||||||
(cmLocalVisualStudio7Generator*)
|
(cmLocalVisualStudio7Generator*)
|
||||||
@ -70,7 +72,8 @@ cmVisualStudio10TargetGenerator(cmTarget* target,
|
|||||||
this->GlobalGenerator->CreateGUID(this->Name.c_str());
|
this->GlobalGenerator->CreateGUID(this->Name.c_str());
|
||||||
this->GUID = this->GlobalGenerator->GetGUID(this->Name.c_str());
|
this->GUID = this->GlobalGenerator->GetGUID(this->Name.c_str());
|
||||||
this->Platform = gg->GetPlatformName();
|
this->Platform = gg->GetPlatformName();
|
||||||
this->ComputeObjectNames();
|
this->LocalGenerator
|
||||||
|
->ComputeObjectNameRequirements(target->GetSourceFiles());
|
||||||
this->BuildFileStream = 0;
|
this->BuildFileStream = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -421,12 +424,11 @@ void cmVisualStudio10TargetGenerator::WriteProjectConfigurationValues()
|
|||||||
void cmVisualStudio10TargetGenerator::WriteCustomCommands()
|
void cmVisualStudio10TargetGenerator::WriteCustomCommands()
|
||||||
{
|
{
|
||||||
this->SourcesVisited.clear();
|
this->SourcesVisited.clear();
|
||||||
std::vector<cmSourceFile*> const& sources = this->Target->GetSourceFiles();
|
for(std::vector<cmSourceFile*>::const_iterator
|
||||||
for(std::vector<cmSourceFile*>::const_iterator source = sources.begin();
|
si = this->GeneratorTarget->CustomCommands.begin();
|
||||||
source != sources.end(); ++source)
|
si != this->GeneratorTarget->CustomCommands.end(); ++si)
|
||||||
{
|
{
|
||||||
cmSourceFile* sf = *source;
|
this->WriteCustomCommand(*si);
|
||||||
this->WriteCustomCommand(sf);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -875,25 +877,6 @@ void cmVisualStudio10TargetGenerator::WriteCLSources()
|
|||||||
this->WriteString("</ItemGroup>\n", 1);
|
this->WriteString("</ItemGroup>\n", 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmVisualStudio10TargetGenerator::ComputeObjectNames()
|
|
||||||
{
|
|
||||||
// get the classes from the source lists then add them to the groups
|
|
||||||
std::vector<cmSourceFile*>const & classes = this->Target->GetSourceFiles();
|
|
||||||
for(std::vector<cmSourceFile*>::const_iterator i = classes.begin();
|
|
||||||
i != classes.end(); i++)
|
|
||||||
{
|
|
||||||
// Add the file to the list of sources.
|
|
||||||
std::string source = (*i)->GetFullPath();
|
|
||||||
if(cmSystemTools::UpperCase((*i)->GetExtension()) == "DEF")
|
|
||||||
{
|
|
||||||
this->ModuleDefinitionFile = (*i)->GetFullPath();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Compute which sources need unique object computation.
|
|
||||||
this->LocalGenerator->ComputeObjectNameRequirements(classes);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool cmVisualStudio10TargetGenerator::OutputSourceSpecificFlags(
|
bool cmVisualStudio10TargetGenerator::OutputSourceSpecificFlags(
|
||||||
cmSourceFile* source)
|
cmSourceFile* source)
|
||||||
{
|
{
|
||||||
@ -1513,10 +1496,10 @@ void cmVisualStudio10TargetGenerator::WriteLinkOptions(std::string const&
|
|||||||
linkOptions.AddFlag("ImportLibrary", imLib.c_str());
|
linkOptions.AddFlag("ImportLibrary", imLib.c_str());
|
||||||
linkOptions.AddFlag("ProgramDataBaseFile", pdb.c_str());
|
linkOptions.AddFlag("ProgramDataBaseFile", pdb.c_str());
|
||||||
linkOptions.Parse(flags.c_str());
|
linkOptions.Parse(flags.c_str());
|
||||||
if(!this->ModuleDefinitionFile.empty())
|
if(!this->GeneratorTarget->ModuleDefinitionFile.empty())
|
||||||
{
|
{
|
||||||
linkOptions.AddFlag("ModuleDefinitionFile",
|
linkOptions.AddFlag("ModuleDefinitionFile",
|
||||||
this->ModuleDefinitionFile.c_str());
|
this->GeneratorTarget->ModuleDefinitionFile.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
linkOptions.RemoveFlag("GenerateManifest");
|
linkOptions.RemoveFlag("GenerateManifest");
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
class cmTarget;
|
class cmTarget;
|
||||||
class cmMakefile;
|
class cmMakefile;
|
||||||
|
class cmGeneratorTarget;
|
||||||
class cmGeneratedFileStream;
|
class cmGeneratedFileStream;
|
||||||
class cmGlobalVisualStudio10Generator;
|
class cmGlobalVisualStudio10Generator;
|
||||||
class cmSourceFile;
|
class cmSourceFile;
|
||||||
@ -75,7 +76,6 @@ private:
|
|||||||
void WriteEvents(std::string const& configName);
|
void WriteEvents(std::string const& configName);
|
||||||
void WriteEvent(const char* name, std::vector<cmCustomCommand> & commands,
|
void WriteEvent(const char* name, std::vector<cmCustomCommand> & commands,
|
||||||
std::string const& configName);
|
std::string const& configName);
|
||||||
void ComputeObjectNames();
|
|
||||||
void WriteGroupSources(const char* name,
|
void WriteGroupSources(const char* name,
|
||||||
std::vector<cmSourceFile*> const& sources,
|
std::vector<cmSourceFile*> const& sources,
|
||||||
std::vector<cmSourceGroup>& );
|
std::vector<cmSourceGroup>& );
|
||||||
@ -87,9 +87,9 @@ private:
|
|||||||
typedef cmVisualStudioGeneratorOptions Options;
|
typedef cmVisualStudioGeneratorOptions Options;
|
||||||
typedef std::map<cmStdString, Options*> OptionsMap;
|
typedef std::map<cmStdString, Options*> OptionsMap;
|
||||||
OptionsMap ClOptions;
|
OptionsMap ClOptions;
|
||||||
std::string ModuleDefinitionFile;
|
|
||||||
std::string PathToVcxproj;
|
std::string PathToVcxproj;
|
||||||
cmTarget* Target;
|
cmTarget* Target;
|
||||||
|
cmGeneratorTarget* GeneratorTarget;
|
||||||
cmMakefile* Makefile;
|
cmMakefile* Makefile;
|
||||||
std::string Platform;
|
std::string Platform;
|
||||||
std::string GUID;
|
std::string GUID;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user