mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-04 12:49:36 -06:00
Xcode: Generate ZERO_CHECK generator target only once
In case CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY has been enabled generate only the root-level ZERO_CHECK target so targets in subdirectories pick up the root generator target of ZERO_CHECK. For the case that CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY is not enabled more investigation and a proper and final fix is still needed. Issue: 14297
This commit is contained in:
@@ -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());
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
BUILD AGGREGATE TARGET ZERO_CHECK
|
||||
4
Tests/RunCMake/XcodeProject/XcodeDependOnZeroCheck.cmake
Normal file
4
Tests/RunCMake/XcodeProject/XcodeDependOnZeroCheck.cmake
Normal file
@@ -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
Tests/RunCMake/XcodeProject/zerocheck/CMakeLists.txt
Normal file
2
Tests/RunCMake/XcodeProject/zerocheck/CMakeLists.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
project(subproject)
|
||||
add_library(subdirlib ../foo.cpp)
|
||||
Reference in New Issue
Block a user