summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2019-10-02 08:15:05 -0400
committerBrad King <brad.king@kitware.com>2019-10-02 08:17:32 -0400
commitac9934406da6793a8c841db6d53f292f65124ed7 (patch)
treeb3f77209eb61e2e1dfc80e3b13e7d000113e451d
parent6fb747a01c27a2226fe4cbf77bc19e6d21286f81 (diff)
downloadcmake-ac9934406da6793a8c841db6d53f292f65124ed7.tar.gz
Xcode: Restore CMAKE_XCODE_GENERATE_SCHEME for custom targets
The target property introduced by commit 413b71485a (Xcode: Create Xcode schemes per target, 2019-03-11, v3.15.0-rc1~347^2) was accidentally not initialized by `CMAKE_XCODE_GENERATE_SCHEME` for custom targets. Fix it and update the test. Fixes: #19759
-rw-r--r--Source/cmTarget.cxx7
-rw-r--r--Tests/RunCMake/XcodeProject/XcodeSchemaProperty-check.cmake10
-rw-r--r--Tests/RunCMake/XcodeProject/XcodeSchemaProperty.cmake2
3 files changed, 18 insertions, 1 deletions
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index a67122c543..98c66da2c3 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -334,7 +334,6 @@ cmTarget::cmTarget(std::string const& name, cmStateEnums::TargetType type,
InitProperty("VS_JUST_MY_CODE_DEBUGGING", nullptr);
#ifdef __APPLE__
if (this->GetGlobalGenerator()->IsXcode()) {
- InitProperty("XCODE_GENERATE_SCHEME", nullptr);
InitProperty("XCODE_SCHEME_ADDRESS_SANITIZER", nullptr);
InitProperty("XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN", nullptr);
InitProperty("XCODE_SCHEME_THREAD_SANITIZER", nullptr);
@@ -354,6 +353,12 @@ cmTarget::cmTarget(std::string const& name, cmStateEnums::TargetType type,
#endif
}
+ if (this->GetType() != cmStateEnums::INTERFACE_LIBRARY) {
+ if (this->GetGlobalGenerator()->IsXcode()) {
+ InitProperty("XCODE_GENERATE_SCHEME", nullptr);
+ }
+ }
+
// Setup per-configuration property default values.
if (this->GetType() != cmStateEnums::UTILITY) {
static const auto configProps = {
diff --git a/Tests/RunCMake/XcodeProject/XcodeSchemaProperty-check.cmake b/Tests/RunCMake/XcodeProject/XcodeSchemaProperty-check.cmake
index 88077b3b53..7d83a7034d 100644
--- a/Tests/RunCMake/XcodeProject/XcodeSchemaProperty-check.cmake
+++ b/Tests/RunCMake/XcodeProject/XcodeSchemaProperty-check.cmake
@@ -7,6 +7,13 @@ function(check_property property matcher)
endif()
endfunction()
+function(expect_schema target)
+ set(schema "${RunCMake_TEST_BINARY_DIR}/XcodeSchemaProperty.xcodeproj/xcshareddata/xcschemes/${target}.xcscheme")
+ if(NOT EXISTS ${schema})
+ message(SEND_ERROR "Missing schema for target ${target}")
+ endif()
+endfunction()
+
function(expect_no_schema target)
set(schema "${RunCMake_TEST_BINARY_DIR}/XcodeSchemaProperty.xcodeproj/xcshareddata/xcschemes/${target}.xcscheme")
if(EXISTS ${schema})
@@ -40,3 +47,6 @@ check_property("ENVIRONMENT" [=[key="BAR"]=])
check_property("ENVIRONMENT" [=[value="bar"]=])
expect_no_schema("NoSchema")
+
+expect_schema("CustomTarget")
+expect_schema("ALL_BUILD")
diff --git a/Tests/RunCMake/XcodeProject/XcodeSchemaProperty.cmake b/Tests/RunCMake/XcodeProject/XcodeSchemaProperty.cmake
index 73ef5caaf2..be219f4115 100644
--- a/Tests/RunCMake/XcodeProject/XcodeSchemaProperty.cmake
+++ b/Tests/RunCMake/XcodeProject/XcodeSchemaProperty.cmake
@@ -38,3 +38,5 @@ create_scheme_for_property(ENVIRONMENT "FOO=foo;BAR=bar")
add_executable(NoSchema main.cpp)
set_target_properties(NoSchema PROPERTIES XCODE_GENERATE_SCHEME OFF)
+
+add_custom_target(CustomTarget)