mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-07 14:20:06 -06:00
@@ -188,6 +188,7 @@ Variables that Change Behavior
|
|||||||
/variable/CMAKE_USER_MAKE_RULES_OVERRIDE
|
/variable/CMAKE_USER_MAKE_RULES_OVERRIDE
|
||||||
/variable/CMAKE_WARN_DEPRECATED
|
/variable/CMAKE_WARN_DEPRECATED
|
||||||
/variable/CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION
|
/variable/CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION
|
||||||
|
/variable/CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY
|
||||||
|
|
||||||
Variables that Describe the System
|
Variables that Describe the System
|
||||||
==================================
|
==================================
|
||||||
|
|||||||
8
Help/release/dev/write-single-xcodeproj.rst
Normal file
8
Help/release/dev/write-single-xcodeproj.rst
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
write-single-xcodeproj
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
* The :generator:`Xcode` generator behavior of generating one project
|
||||||
|
file per :command:`project()` command could now be controlled with the
|
||||||
|
:variable:`CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY` variable.
|
||||||
|
This could be useful to speed up the CMake generation step for
|
||||||
|
large projects and to work-around a bug in the ``ZERO_CHECK`` logic.
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY
|
||||||
|
-------------------------------------------
|
||||||
|
|
||||||
|
If enabled, the :generator:`Xcode` generator will generate only a
|
||||||
|
single Xcode project file for the topmost :command:`project()` command
|
||||||
|
instead of generating one for every ``project()`` command.
|
||||||
|
|
||||||
|
This could be useful to speed up the CMake generation step for
|
||||||
|
large projects and to work-around a bug in the ``ZERO_CHECK`` logic.
|
||||||
@@ -388,6 +388,17 @@ void cmGlobalXCodeGenerator::Generate()
|
|||||||
std::map<std::string, std::vector<cmLocalGenerator*>>::iterator it;
|
std::map<std::string, std::vector<cmLocalGenerator*>>::iterator it;
|
||||||
for (it = this->ProjectMap.begin(); it != this->ProjectMap.end(); ++it) {
|
for (it = this->ProjectMap.begin(); it != this->ProjectMap.end(); ++it) {
|
||||||
cmLocalGenerator* root = it->second[0];
|
cmLocalGenerator* root = it->second[0];
|
||||||
|
|
||||||
|
bool generateTopLevelProjectOnly =
|
||||||
|
root->GetMakefile()->IsOn("CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY");
|
||||||
|
|
||||||
|
if (generateTopLevelProjectOnly) {
|
||||||
|
cmStateSnapshot snp = root->GetStateSnapshot();
|
||||||
|
if (snp.GetBuildsystemDirectoryParent().IsValid()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this->SetGenerationRoot(root);
|
this->SetGenerationRoot(root);
|
||||||
// now create the project
|
// now create the project
|
||||||
this->OutputXCodeProject(root, it->second);
|
this->OutputXCodeProject(root, it->second);
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ run_cmake(XcodeFileType)
|
|||||||
run_cmake(XcodeAttributeLocation)
|
run_cmake(XcodeAttributeLocation)
|
||||||
run_cmake(XcodeAttributeGenex)
|
run_cmake(XcodeAttributeGenex)
|
||||||
run_cmake(XcodeAttributeGenexError)
|
run_cmake(XcodeAttributeGenexError)
|
||||||
|
run_cmake(XcodeGenerateTopLevelProjectOnly)
|
||||||
run_cmake(XcodeObjectNeedsEscape)
|
run_cmake(XcodeObjectNeedsEscape)
|
||||||
run_cmake(XcodeObjectNeedsQuote)
|
run_cmake(XcodeObjectNeedsQuote)
|
||||||
run_cmake(XcodeOptimizationFlags)
|
run_cmake(XcodeOptimizationFlags)
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
if(EXISTS "${RunCMake_TEST_BINARY_DIR}/subproject/subproject.xcodeproj")
|
||||||
|
message(SEND_ERROR "Unexpected project file for subproject found.")
|
||||||
|
endif()
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
set(CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY TRUE)
|
||||||
|
project(XcodeGenerateTopLevelProjectOnly NONE)
|
||||||
|
add_subdirectory(subproject)
|
||||||
1
Tests/RunCMake/XcodeProject/subproject/CMakeLists.txt
Normal file
1
Tests/RunCMake/XcodeProject/subproject/CMakeLists.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
project(subproject)
|
||||||
Reference in New Issue
Block a user