diff options
author | Brad King <brad.king@kitware.com> | 2019-10-02 08:25:27 -0400 |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2019-10-02 08:25:27 -0400 |
commit | b21e4e4a1511417956b1d6d07f49425747c400e2 (patch) | |
tree | 3f385f63e23090cbe464e897ba303edf3e0130b8 | |
parent | f695b6b3bb0347ec47e6457d330237920d6e7cf7 (diff) | |
parent | ac9934406da6793a8c841db6d53f292f65124ed7 (diff) | |
download | cmake-b21e4e4a1511417956b1d6d07f49425747c400e2.tar.gz |
Merge branch 'backport-xcode-scheme-custom-target' into release-3.15
Merge-request: !3878
-rw-r--r-- | Source/cmTarget.cxx | 7 | ||||
-rw-r--r-- | Tests/RunCMake/XcodeProject/XcodeSchemaProperty-check.cmake | 10 | ||||
-rw-r--r-- | Tests/RunCMake/XcodeProject/XcodeSchemaProperty.cmake | 2 |
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) |