Merge topic 'vs-project-groups'
fd3249e
New USE_FOLDERS property OFF by default. (#3796)
This commit is contained in:
commit
dacc47853d
|
@ -180,15 +180,33 @@ MACRO(CMAKE_SETUP_TESTING)
|
|||
ENDMACRO(CMAKE_SETUP_TESTING)
|
||||
|
||||
|
||||
# Provide a way for Visual Studio Express users to turn OFF the new FOLDER
|
||||
# organization feature. Default to ON for non-Express users. Express users must
|
||||
# explicitly turn off this option to build CMake in the Express IDE...
|
||||
#
|
||||
OPTION(CMAKE_USE_FOLDERS "Enable folder grouping of projects in IDEs." ON)
|
||||
MARK_AS_ADVANCED(CMAKE_USE_FOLDERS)
|
||||
|
||||
|
||||
#-----------------------------------------------------------------------
|
||||
# a macro that only sets the FOLDER target property if it's
|
||||
# "appropriate"
|
||||
#-----------------------------------------------------------------------
|
||||
MACRO(CMAKE_SET_TARGET_FOLDER tgt folder)
|
||||
# Really, I just want this to be an "if(TARGET ${tgt})" ...
|
||||
# but I'm not sure that our min req'd., CMake 2.4.5 can handle
|
||||
# that... so I'm just activating this for now, with a version
|
||||
# compare, and only for MSVC builds.
|
||||
IF(MSVC)
|
||||
IF(NOT ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.8)
|
||||
SET_PROPERTY(TARGET "${tgt}" PROPERTY FOLDER "${folder}")
|
||||
IF(CMAKE_USE_FOLDERS)
|
||||
SET_PROPERTY(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
|
||||
# Really, I just want this to be an "if(TARGET ${tgt})" ...
|
||||
# but I'm not sure that our min req'd., CMake 2.4.5 can handle
|
||||
# that... so I'm just activating this for now, with a version
|
||||
# compare, and only for MSVC builds.
|
||||
IF(MSVC)
|
||||
IF(NOT ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.8)
|
||||
SET_PROPERTY(TARGET "${tgt}" PROPERTY FOLDER "${folder}")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ELSE()
|
||||
SET_PROPERTY(GLOBAL PROPERTY USE_FOLDERS OFF)
|
||||
ENDIF()
|
||||
ENDMACRO(CMAKE_SET_TARGET_FOLDER)
|
||||
|
||||
|
|
|
@ -1871,9 +1871,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;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
|
|
@ -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 << "}\") = \"" <<
|
||||
|
|
|
@ -3504,7 +3504,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 "
|
||||
|
|
|
@ -7,6 +7,13 @@ find_package(CVS)
|
|||
find_package(Subversion)
|
||||
find_package(Git)
|
||||
|
||||
option(ExternalProjectTest_USE_FOLDERS "Enable folder grouping in IDEs." ON)
|
||||
if(ExternalProjectTest_USE_FOLDERS)
|
||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
else()
|
||||
set_property(GLOBAL PROPERTY USE_FOLDERS OFF)
|
||||
endif()
|
||||
|
||||
set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER
|
||||
"CMakePredefinedTargets-in-ExternalProjectTest")
|
||||
|
||||
|
@ -61,6 +68,15 @@ ExternalProject_Add(${proj}
|
|||
INSTALL_COMMAND ""
|
||||
)
|
||||
|
||||
set(proj TargetNameSameAsFolder)
|
||||
ExternalProject_Add(${proj}
|
||||
BUILD_COMMAND ""
|
||||
CONFIGURE_COMMAND ""
|
||||
DOWNLOAD_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
)
|
||||
set_property(TARGET ${proj} PROPERTY FOLDER "${proj}")
|
||||
|
||||
set(proj MinimalNoOpProject)
|
||||
ExternalProject_Add(${proj}
|
||||
BUILD_COMMAND ""
|
||||
|
|
Loading…
Reference in New Issue