diff options
author | Ken Martin <ken.martin@kitware.com> | 2005-05-11 14:19:58 (GMT) |
---|---|---|
committer | Ken Martin <ken.martin@kitware.com> | 2005-05-11 14:19:58 (GMT) |
commit | 25f75d90756fcd991554c3d5d0bb747ea4158dfd (patch) | |
tree | ceaf0e283ad2a64ef5279a0044904b0bb10c3d4a | |
parent | 4b1c392c9c441437a00d0be3c2da0fd0b103777f (diff) | |
download | CMake-25f75d90756fcd991554c3d5d0bb747ea4158dfd.zip CMake-25f75d90756fcd991554c3d5d0bb747ea4158dfd.tar.gz CMake-25f75d90756fcd991554c3d5d0bb747ea4158dfd.tar.bz2 |
ENH: added new methods to convert to HomeRelative paths
-rw-r--r-- | Source/cmGlobalGenerator.cxx | 23 | ||||
-rw-r--r-- | 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<int>(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<cmStdString> 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<std::string>& 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<std::string> m_HomeOutputDirectoryComponents; + bool m_ForceUnixPaths; cmStdString m_FindMakeProgramFile; cmStdString m_ConfiguredFilesPath; |