Selaa lähdekoodia

Merge branch '14297-partial-xcode-zero-check' into release-3.11

Merge-request: !1790
Brad King 7 vuotta sitten
vanhempi
sitoutus
72a85d9f0b

+ 5 - 1
Source/cmGlobalXCodeGenerator.cxx

@@ -459,7 +459,11 @@ void cmGlobalXCodeGenerator::AddExtraTargets(
 
   // Add ZERO_CHECK
   bool regenerate = !mf->IsOn("CMAKE_SUPPRESS_REGENERATION");
-  if (regenerate) {
+  bool generateTopLevelProjectOnly =
+    mf->IsOn("CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY");
+  bool isTopLevel =
+    !root->GetStateSnapshot().GetBuildsystemDirectoryParent().IsValid();
+  if (regenerate && (isTopLevel || !generateTopLevelProjectOnly)) {
     this->CreateReRunCMakeFile(root, gens);
     std::string file =
       this->ConvertToRelativeForMake(this->CurrentReRunCMakeMakefile.c_str());

+ 14 - 0
Tests/RunCMake/XcodeProject/RunCMakeTest.cmake

@@ -236,3 +236,17 @@ if(XCODE_VERSION VERSION_GREATER_EQUAL 8)
     deploymeny_target_test(${SDK})
   endforeach()
 endif()
+
+function(XcodeDependOnZeroCheck)
+  set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeDependOnZeroCheck-build)
+  set(RunCMake_TEST_NO_CLEAN 1)
+
+  file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
+  file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
+
+  run_cmake(XcodeDependOnZeroCheck)
+  run_cmake_command(XcodeDependOnZeroCheck-build ${CMAKE_COMMAND} --build . --target parentdirlib)
+  run_cmake_command(XcodeDependOnZeroCheck-build ${CMAKE_COMMAND} --build . --target subdirlib)
+endfunction()
+
+XcodeDependOnZeroCheck()

+ 1 - 0
Tests/RunCMake/XcodeProject/XcodeDependOnZeroCheck-build-stdout.txt

@@ -0,0 +1 @@
+BUILD AGGREGATE TARGET ZERO_CHECK

+ 4 - 0
Tests/RunCMake/XcodeProject/XcodeDependOnZeroCheck.cmake

@@ -0,0 +1,4 @@
+set(CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY TRUE)
+project(XcodeDependOnZeroCheck CXX)
+add_subdirectory(zerocheck)
+add_library(parentdirlib foo.cpp)

+ 2 - 0
Tests/RunCMake/XcodeProject/zerocheck/CMakeLists.txt

@@ -0,0 +1,2 @@
+project(subproject)
+add_library(subdirlib ../foo.cpp)