ENH: minor perf improvement

This commit is contained in:
Ken Martin 2005-06-01 13:37:49 -04:00
parent 0f8282fab1
commit 46e5b9afe2
2 changed files with 26 additions and 6 deletions

View File

@ -54,6 +54,13 @@ cmLocalUnixMakefileGenerator3::~cmLocalUnixMakefileGenerator3()
{
}
//----------------------------------------------------------------------------
void cmLocalUnixMakefileGenerator3::Configure()
{
this->ComputeHomeRelativeOutputPath();
this->cmLocalGenerator::Configure();
}
//----------------------------------------------------------------------------
void cmLocalUnixMakefileGenerator3::Generate()
{
@ -259,17 +266,21 @@ void cmLocalUnixMakefileGenerator3::WriteDisclaimer(std::ostream& os)
<< cmMakefile::GetMinorVersion() << "\n\n";
}
std::string cmLocalUnixMakefileGenerator3::GetHomeRelativeOutputPath()
void cmLocalUnixMakefileGenerator3::ComputeHomeRelativeOutputPath()
{
// Include the rule file for each object.
std::string relPath =
m_HomeRelativeOutputPath =
cmSystemTools::RelativePath(m_Makefile->GetHomeOutputDirectory(),
m_Makefile->GetStartOutputDirectory());
if (relPath.size())
if (m_HomeRelativeOutputPath.size())
{
relPath += "/";
m_HomeRelativeOutputPath += "/";
}
return relPath;
}
const std::string &cmLocalUnixMakefileGenerator3::GetHomeRelativeOutputPath()
{
return m_HomeRelativeOutputPath;
}
//----------------------------------------------------------------------------

View File

@ -43,12 +43,18 @@ public:
*/
virtual void Generate();
/**
* Process the CMakeLists files for this directory to fill in the
* m_Makefile ivar
*/
virtual void Configure();
/** creates the common disclainer text at the top of each makefile */
void WriteDisclaimer(std::ostream& os);
// this returns the relative path between the HomeOutputDirectory and this
// local generators StartOutputDirectory
std::string GetHomeRelativeOutputPath();
const std::string &GetHomeRelativeOutputPath();
// Write out a make rule
void WriteMakeRule(std::ostream& os,
@ -312,6 +318,7 @@ protected:
std::string CreateMakeVariable(const char* sin, const char* s2in);
//==========================================================================
void ComputeHomeRelativeOutputPath();
private:
std::map<cmStdString, IntegrityCheckSet> m_CheckDependFiles;
@ -332,6 +339,8 @@ private:
// Flag for whether echo command needs quotes.
bool m_EchoNeedsQuote;
std::string m_HomeRelativeOutputPath;
// Set of object file names that will be built in this directory.
std::set<cmStdString> m_ObjectFiles;
};