From 25f75d90756fcd991554c3d5d0bb747ea4158dfd Mon Sep 17 00:00:00 2001 From: Ken Martin Date: Wed, 11 May 2005 10:19:58 -0400 Subject: ENH: added new methods to convert to HomeRelative paths --- Source/cmGlobalGenerator.cxx | 23 +++++++++++++++++++++-- Source/cmGlobalGenerator.h | 16 ++++++++++++++++ 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 9ebdcad..bb0d152 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -491,6 +491,12 @@ void cmGlobalGenerator::ClearEnabledLanguages() void cmGlobalGenerator::Configure() { + // Setup the current output directory components for use by + // ConvertToRelativePath. + std::string outdir = + cmSystemTools::CollapseFullPath(m_CMakeInstance->GetHomeOutputDirectory()); + cmSystemTools::SplitPath(outdir.c_str(), m_HomeOutputDirectoryComponents); + // Delete any existing cmLocalGenerators unsigned int i; for (i = 0; i < m_LocalGenerators.size(); ++i) @@ -522,8 +528,7 @@ void cmGlobalGenerator::Configure() sprintf(num,"%d",static_cast(m_LocalGenerators.size())); this->GetCMakeInstance()->AddCacheEntry ("CMAKE_NUMBER_OF_LOCAL_GENERATORS", num, - "number of local generators", - cmCacheManager::INTERNAL); + "number of local generators", cmCacheManager::INTERNAL); std::set notFoundMap; // after it is all done do a ConfigureFinalPass @@ -1091,3 +1096,17 @@ void cmGlobalGenerator::SetupTests() } +//---------------------------------------------------------------------------- +std::string cmGlobalGenerator::ConvertToHomeRelativePath(const char* remote) +{ + return (this->ConvertToRelativePath(m_HomeOutputDirectoryComponents,remote)); +} + +//---------------------------------------------------------------------------- +std::string +cmGlobalGenerator::ConvertToHomeRelativeOutputPath(const char* remote) +{ + return cmSystemTools::ConvertToOutputPath + (this->ConvertToRelativePath(m_HomeOutputDirectoryComponents,remote).c_str()); +} + diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index c72ab67..8a95263 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -138,6 +138,20 @@ public: std::string ConvertToRelativePath(const std::vector& local, const char* remote); + /** + * Convert the given remote path to a relative path with respect to + * this generator's output directory. The remote path must use + * forward slashes and not already be escaped or quoted. + */ + std::string ConvertToHomeRelativePath(const char* remote); + + /** + * Convert to an output path that is relative to the output + * directory. The remote path must use forward slashes and not + * already be escaped or quoted. + */ + std::string ConvertToHomeRelativeOutputPath(const char* remote); + /* * Determine what program to use for building the project. */ @@ -151,6 +165,8 @@ protected: void ConfigureRelativePaths(); void SetupTests(); + std::vector m_HomeOutputDirectoryComponents; + bool m_ForceUnixPaths; cmStdString m_FindMakeProgramFile; cmStdString m_ConfiguredFilesPath; -- cgit v0.12