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() void cmLocalUnixMakefileGenerator3::Generate()
{ {
@ -259,17 +266,21 @@ void cmLocalUnixMakefileGenerator3::WriteDisclaimer(std::ostream& os)
<< cmMakefile::GetMinorVersion() << "\n\n"; << cmMakefile::GetMinorVersion() << "\n\n";
} }
std::string cmLocalUnixMakefileGenerator3::GetHomeRelativeOutputPath() void cmLocalUnixMakefileGenerator3::ComputeHomeRelativeOutputPath()
{ {
// Include the rule file for each object. // Include the rule file for each object.
std::string relPath = m_HomeRelativeOutputPath =
cmSystemTools::RelativePath(m_Makefile->GetHomeOutputDirectory(), cmSystemTools::RelativePath(m_Makefile->GetHomeOutputDirectory(),
m_Makefile->GetStartOutputDirectory()); 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(); 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 */ /** creates the common disclainer text at the top of each makefile */
void WriteDisclaimer(std::ostream& os); void WriteDisclaimer(std::ostream& os);
// this returns the relative path between the HomeOutputDirectory and this // this returns the relative path between the HomeOutputDirectory and this
// local generators StartOutputDirectory // local generators StartOutputDirectory
std::string GetHomeRelativeOutputPath(); const std::string &GetHomeRelativeOutputPath();
// Write out a make rule // Write out a make rule
void WriteMakeRule(std::ostream& os, void WriteMakeRule(std::ostream& os,
@ -312,6 +318,7 @@ protected:
std::string CreateMakeVariable(const char* sin, const char* s2in); std::string CreateMakeVariable(const char* sin, const char* s2in);
//========================================================================== //==========================================================================
void ComputeHomeRelativeOutputPath();
private: private:
std::map<cmStdString, IntegrityCheckSet> m_CheckDependFiles; std::map<cmStdString, IntegrityCheckSet> m_CheckDependFiles;
@ -332,6 +339,8 @@ private:
// Flag for whether echo command needs quotes. // Flag for whether echo command needs quotes.
bool m_EchoNeedsQuote; bool m_EchoNeedsQuote;
std::string m_HomeRelativeOutputPath;
// Set of object file names that will be built in this directory. // Set of object file names that will be built in this directory.
std::set<cmStdString> m_ObjectFiles; std::set<cmStdString> m_ObjectFiles;
}; };