diff options
author | Stephen Kelly <steveire@gmail.com> | 2015-05-04 21:01:29 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2015-05-16 06:11:33 (GMT) |
commit | 57bdc1a2f7d416c106c4bef8f3543eec74c3c391 (patch) | |
tree | 35f8d079bab6b86e79472663bd6a582fab2be7fa /Source/cmState.cxx | |
parent | ebf8a41984f591dbd6c22735aec7f2b1c36c9e0a (diff) | |
download | CMake-57bdc1a2f7d416c106c4bef8f3543eec74c3c391.zip CMake-57bdc1a2f7d416c106c4bef8f3543eec74c3c391.tar.gz CMake-57bdc1a2f7d416c106c4bef8f3543eec74c3c391.tar.bz2 |
cmState: Compute and store directory components.
There is no need to duplicate these in all cmLocalGenerators.
Rename the symbols according to current conventions.
Add explicit calls to Set{Source,Binary}Directory with empty strings
in order to trigger the population of the components containers with
the current working directory in cmLocalGenerator. Having
directories set to empty is a special case in CMake, which is relied
on for the `if(CMAKE_BINARY_DIR)` condition at the end of
CMakeDetermineSystem.cmake.
Diffstat (limited to 'Source/cmState.cxx')
-rw-r--r-- | Source/cmState.cxx | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/Source/cmState.cxx b/Source/cmState.cxx index 82a2939..aa690dc 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -458,6 +458,10 @@ void cmState::SetSourceDirectory(std::string const& sourceDirectory) { this->SourceDirectory = sourceDirectory; cmSystemTools::ConvertToUnixSlashes(this->SourceDirectory); + + cmSystemTools::SplitPath( + cmSystemTools::CollapseFullPath(this->SourceDirectory), + this->SourceDirectoryComponents); } const char* cmState::GetSourceDirectory() const @@ -465,10 +469,19 @@ const char* cmState::GetSourceDirectory() const return this->SourceDirectory.c_str(); } +std::vector<std::string> const& cmState::GetSourceDirectoryComponents() const +{ + return this->SourceDirectoryComponents; +} + void cmState::SetBinaryDirectory(std::string const& binaryDirectory) { this->BinaryDirectory = binaryDirectory; cmSystemTools::ConvertToUnixSlashes(this->BinaryDirectory); + + cmSystemTools::SplitPath( + cmSystemTools::CollapseFullPath(this->BinaryDirectory), + this->BinaryDirectoryComponents); } const char* cmState::GetBinaryDirectory() const @@ -476,6 +489,11 @@ const char* cmState::GetBinaryDirectory() const return this->BinaryDirectory.c_str(); } +std::vector<std::string> const& cmState::GetBinaryDirectoryComponents() const +{ + return this->BinaryDirectoryComponents; +} + cmState::Snapshot cmState::CreateSnapshot(Snapshot originSnapshot) { PositionType pos = this->ParentPositions.size(); |