ENH: SetupPathConversions is now called automatically on demand.

This commit is contained in:
Brad King 2007-03-08 08:38:40 -05:00
parent 9a5a051f21
commit 2f2b5b2503
4 changed files with 11 additions and 8 deletions

View File

@ -597,7 +597,6 @@ std::string cmGlobalUnixMakefileGenerator3
lg->GetMakefile()->MakeStartDirectoriesCurrent(); lg->GetMakefile()->MakeStartDirectoriesCurrent();
} }
lg->SetupPathConversions();
makeCommand += " \""; makeCommand += " \"";
std::string tname = targetName; std::string tname = targetName;
if(fast) if(fast)

View File

@ -48,6 +48,7 @@ cmLocalGenerator::cmLocalGenerator()
this->Configured = false; this->Configured = false;
this->EmitUniversalBinaryFlags = true; this->EmitUniversalBinaryFlags = true;
this->RelativePathsConfigured = false; this->RelativePathsConfigured = false;
this->PathConversionsSetup = false;
} }
cmLocalGenerator::~cmLocalGenerator() cmLocalGenerator::~cmLocalGenerator()
@ -80,9 +81,7 @@ void cmLocalGenerator::Configure()
this->Makefile->ConfigureSubDirectory(*sdi); this->Makefile->ConfigureSubDirectory(*sdi);
} }
} }
this->SetupPathConversions();
// Check whether relative paths should be used for optionally // Check whether relative paths should be used for optionally
// relative paths. // relative paths.
this->UseRelativePaths = this->Makefile->IsOn("CMAKE_USE_RELATIVE_PATHS"); this->UseRelativePaths = this->Makefile->IsOn("CMAKE_USE_RELATIVE_PATHS");
@ -2014,6 +2013,13 @@ std::string cmLocalGenerator::Convert(const char* source,
OutputFormat output, OutputFormat output,
bool optional) bool optional)
{ {
// Make sure the relative path conversion components are set.
if(!this->PathConversionsSetup)
{
this->SetupPathConversions();
this->PathConversionsSetup = true;
}
// Convert the path to a relative path. // Convert the path to a relative path.
std::string result = source; std::string result = source;

View File

@ -102,9 +102,6 @@ public:
OutputFormat output = UNCHANGED, OutputFormat output = UNCHANGED,
bool optional = false); bool optional = false);
///! Call this prior to using Convert
void SetupPathConversions();
/** /**
* Convert the given path to an output path that is optionally * Convert the given path to an output path that is optionally
* relative based on the cache option CMAKE_USE_RELATIVE_PATHS. The * relative based on the cache option CMAKE_USE_RELATIVE_PATHS. The
@ -279,6 +276,7 @@ protected:
void ConfigureRelativePaths(); void ConfigureRelativePaths();
std::string FindRelativePathTopSource(); std::string FindRelativePathTopSource();
std::string FindRelativePathTopBinary(); std::string FindRelativePathTopBinary();
void SetupPathConversions();
cmMakefile *Makefile; cmMakefile *Makefile;
cmGlobalGenerator *GlobalGenerator; cmGlobalGenerator *GlobalGenerator;
@ -314,6 +312,7 @@ protected:
std::string RelativePathTopSource; std::string RelativePathTopSource;
std::string RelativePathTopBinary; std::string RelativePathTopBinary;
bool RelativePathsConfigured; bool RelativePathsConfigured;
bool PathConversionsSetup;
}; };
#endif #endif

View File

@ -1210,7 +1210,6 @@ int cmake::ExecuteCMakeCommand(std::vector<std::string>& args)
lgd->GetMakefile()->SetStartDirectory(startDir.c_str()); lgd->GetMakefile()->SetStartDirectory(startDir.c_str());
lgd->GetMakefile()->SetStartOutputDirectory(startOutDir.c_str()); lgd->GetMakefile()->SetStartOutputDirectory(startOutDir.c_str());
lgd->GetMakefile()->MakeStartDirectoriesCurrent(); lgd->GetMakefile()->MakeStartDirectoriesCurrent();
lgd->SetupPathConversions();
// Actually scan dependencies. // Actually scan dependencies.
return lgd->ScanDependencies(depInfo.c_str())? 0 : 2; return lgd->ScanDependencies(depInfo.c_str())? 0 : 2;