diff options
author | David Cole <david.cole@kitware.com> | 2010-10-01 21:23:53 (GMT) |
---|---|---|
committer | David Cole <david.cole@kitware.com> | 2010-10-02 18:31:02 (GMT) |
commit | fd3249e11afeb38284ee8e2012134de4d410c92b (patch) | |
tree | 360c3c1fb3993ca3e25a3de663093889a2187ba3 /Source | |
parent | e6ac0aacf6c3ce17141870e252fda77d994782d3 (diff) | |
download | CMake-fd3249e11afeb38284ee8e2012134de4d410c92b.zip CMake-fd3249e11afeb38284ee8e2012134de4d410c92b.tar.gz CMake-fd3249e11afeb38284ee8e2012134de4d410c92b.tar.bz2 |
New USE_FOLDERS property OFF by default. (#3796)
Visual Studio Express editions do not support solution folders,
so default behavior should be as if USE_FOLDERS global property
is OFF.
Also, allow folder names to be the same as target names: internally,
use a prefix to distinguish folder GUIDs from target GUIDs. Add
a target and folder with the same name in the ExternalProject
test to exercise this code.
For CMake itself, provide a new option CMAKE_USE_FOLDERS that
defaults to ON so that Visual Studio users get a nicely organized
CMake project. Express edition users will have to turn off the
CMAKE_USE_FOLDERS option in order to build CMake in the VS Express
IDE.
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmGlobalGenerator.cxx | 5 | ||||
-rw-r--r-- | Source/cmGlobalVisualStudio7Generator.cxx | 12 | ||||
-rw-r--r-- | Source/cmake.cxx | 2 |
3 files changed, 14 insertions, 5 deletions
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 8e77294..b9deaef 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1863,9 +1863,10 @@ bool cmGlobalGenerator::UseFolderProperty() return cmSystemTools::IsOn(prop); } - // By default, this feature is ON: + // By default, this feature is OFF, since it is not supported in the + // Visual Studio Express editions: // - return true; + return false; } //---------------------------------------------------------------------------- diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx index f455810..e08b1ef 100644 --- a/Source/cmGlobalVisualStudio7Generator.cxx +++ b/Source/cmGlobalVisualStudio7Generator.cxx @@ -323,7 +323,7 @@ void cmGlobalVisualStudio7Generator::WriteTargetsToSolution( if (cumulativePath.empty()) { - cumulativePath = *iter; + cumulativePath = "CMAKE_FOLDER_GUID_" + *iter; } else { @@ -431,14 +431,22 @@ void cmGlobalVisualStudio7Generator //---------------------------------------------------------------------------- void cmGlobalVisualStudio7Generator::WriteFolders(std::ostream& fout) { + const char *prefix = "CMAKE_FOLDER_GUID_"; + const std::string::size_type skip_prefix = strlen(prefix); std::string guidProjectTypeFolder = "2150E333-8FDC-42A3-9474-1A3956D46DE8"; for(std::map<std::string,std::set<std::string> >::iterator iter = VisualStudioFolders.begin(); iter != VisualStudioFolders.end(); ++iter) { std::string fullName = iter->first; std::string guid = this->GetGUID(fullName.c_str()); - std::string nameOnly = cmSystemTools::GetFilenameName(fullName); + cmSystemTools::ReplaceString(fullName, "/", "\\"); + if (cmSystemTools::StringStartsWith(fullName.c_str(), prefix)) + { + fullName = fullName.substr(skip_prefix); + } + + std::string nameOnly = cmSystemTools::GetFilenameName(fullName); fout << "Project(\"{" << guidProjectTypeFolder << "}\") = \"" << diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 37ff7c5..db26b73 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -3486,7 +3486,7 @@ void cmake::DefineProperties(cmake *cm) cm->DefineProperty ("USE_FOLDERS", cmProperty::GLOBAL, "Use the FOLDER target property to organize targets into folders.", - "If not set, CMake treats this property as ON by default. " + "If not set, CMake treats this property as OFF by default. " "CMake generators that are capable of organizing into a " "hierarchy of folders use the values of the FOLDER target " "property to name those folders. See also the documentation " |