summaryrefslogtreecommitdiffstats
path: root/Source/cmGlobalXCodeGenerator.cxx
diff options
context:
space:
mode:
authorGregor Jasny <gjasny@googlemail.com>2017-10-19 20:48:13 (GMT)
committerGregor Jasny <gjasny@googlemail.com>2017-10-31 16:09:26 (GMT)
commite4e9ce7cbe9b41dd535d5246153900cb9657c6ba (patch)
tree2468f4181c0ffd92b5811e33cdc13e42c956e2e3 /Source/cmGlobalXCodeGenerator.cxx
parent41d796be155e0da8fec66cb281429ed0eb91650d (diff)
downloadCMake-e4e9ce7cbe9b41dd535d5246153900cb9657c6ba.zip
CMake-e4e9ce7cbe9b41dd535d5246153900cb9657c6ba.tar.gz
CMake-e4e9ce7cbe9b41dd535d5246153900cb9657c6ba.tar.bz2
Xcode: Add option to generate only topmost project file
Closes #16780
Diffstat (limited to 'Source/cmGlobalXCodeGenerator.cxx')
-rw-r--r--Source/cmGlobalXCodeGenerator.cxx11
1 files changed, 11 insertions, 0 deletions
diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx
index 78943e4..d902ca3 100644
--- a/Source/cmGlobalXCodeGenerator.cxx
+++ b/Source/cmGlobalXCodeGenerator.cxx
@@ -388,6 +388,17 @@ void cmGlobalXCodeGenerator::Generate()
std::map<std::string, std::vector<cmLocalGenerator*>>::iterator it;
for (it = this->ProjectMap.begin(); it != this->ProjectMap.end(); ++it) {
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);
// now create the project
this->OutputXCodeProject(root, it->second);