Przeglądaj źródła

Merge topic 'xcode-scheme-test-config'

7d28005244 Xcode: Support for test action 'Build Configuration' scheme property
1f4e1ccbc8 Help: Move launch config scheme property to the correct section
8aaae0f643 vim: Remove duplicated keywords from cmake.vim

Acked-by: Kitware Robot <[email protected]>
Merge-request: !10154
Brad King 9 miesięcy temu
rodzic
commit
74c462b4f8

+ 2 - 2
Auxiliary/vim/syntax/cmake.vim

@@ -487,7 +487,6 @@ syn keyword cmakeProperty contained
             \ XCODE_SCHEME_ENVIRONMENT
             \ XCODE_SCHEME_ENVIRONMENT
             \ XCODE_SCHEME_EXECUTABLE
             \ XCODE_SCHEME_EXECUTABLE
             \ XCODE_SCHEME_GUARD_MALLOC
             \ XCODE_SCHEME_GUARD_MALLOC
-            \ XCODE_SCHEME_LAUNCH_CONFIGURATION
             \ XCODE_SCHEME_LAUNCH_MODE
             \ XCODE_SCHEME_LAUNCH_MODE
             \ XCODE_SCHEME_LLDB_INIT_FILE
             \ XCODE_SCHEME_LLDB_INIT_FILE
             \ XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
             \ XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
@@ -501,6 +500,7 @@ syn keyword cmakeProperty contained
             \ XCODE_SCHEME_ENABLE_GPU_API_VALIDATION
             \ XCODE_SCHEME_ENABLE_GPU_API_VALIDATION
             \ XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION
             \ XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION
             \ XCODE_SCHEME_LAUNCH_CONFIGURATION
             \ XCODE_SCHEME_LAUNCH_CONFIGURATION
+            \ XCODE_SCHEME_TEST_CONFIGURATION
             \ XCODE_SCHEME_WORKING_DIRECTORY
             \ XCODE_SCHEME_WORKING_DIRECTORY
             \ XCODE_SCHEME_ZOMBIE_OBJECTS
             \ XCODE_SCHEME_ZOMBIE_OBJECTS
             \ XCODE_XCCONFIG
             \ XCODE_XCCONFIG
@@ -1853,7 +1853,6 @@ syn keyword cmakeVariable contained
             \ CMAKE_XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION
             \ CMAKE_XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION
             \ CMAKE_XCODE_SCHEME_ENVIRONMENT
             \ CMAKE_XCODE_SCHEME_ENVIRONMENT
             \ CMAKE_XCODE_SCHEME_GUARD_MALLOC
             \ CMAKE_XCODE_SCHEME_GUARD_MALLOC
-            \ CMAKE_XCODE_SCHEME_LAUNCH_CONFIGURATION
             \ CMAKE_XCODE_SCHEME_LAUNCH_MODE
             \ CMAKE_XCODE_SCHEME_LAUNCH_MODE
             \ CMAKE_XCODE_SCHEME_LLDB_INIT_FILE
             \ CMAKE_XCODE_SCHEME_LLDB_INIT_FILE
             \ CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
             \ CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
@@ -1867,6 +1866,7 @@ syn keyword cmakeVariable contained
             \ CMAKE_XCODE_SCHEME_ENABLE_GPU_API_VALIDATION
             \ CMAKE_XCODE_SCHEME_ENABLE_GPU_API_VALIDATION
             \ CMAKE_XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION
             \ CMAKE_XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION
             \ CMAKE_XCODE_SCHEME_LAUNCH_CONFIGURATION
             \ CMAKE_XCODE_SCHEME_LAUNCH_CONFIGURATION
+            \ CMAKE_XCODE_SCHEME_TEST_CONFIGURATION
             \ CMAKE_XCODE_SCHEME_WORKING_DIRECTORY
             \ CMAKE_XCODE_SCHEME_WORKING_DIRECTORY
             \ CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS
             \ CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS
             \ CMAKE_XCODE_XCCONFIG
             \ CMAKE_XCODE_XCCONFIG

+ 1 - 0
Help/manual/cmake-properties.7.rst

@@ -494,6 +494,7 @@ Properties on Targets
    /prop_tgt/XCODE_SCHEME_EXECUTABLE
    /prop_tgt/XCODE_SCHEME_EXECUTABLE
    /prop_tgt/XCODE_SCHEME_GUARD_MALLOC
    /prop_tgt/XCODE_SCHEME_GUARD_MALLOC
    /prop_tgt/XCODE_SCHEME_LAUNCH_CONFIGURATION
    /prop_tgt/XCODE_SCHEME_LAUNCH_CONFIGURATION
+   /prop_tgt/XCODE_SCHEME_TEST_CONFIGURATION
    /prop_tgt/XCODE_SCHEME_LAUNCH_MODE
    /prop_tgt/XCODE_SCHEME_LAUNCH_MODE
    /prop_tgt/XCODE_SCHEME_LLDB_INIT_FILE
    /prop_tgt/XCODE_SCHEME_LLDB_INIT_FILE
    /prop_tgt/XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
    /prop_tgt/XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP

+ 1 - 0
Help/manual/cmake-variables.7.rst

@@ -297,6 +297,7 @@ Variables that Change Behavior
    /variable/CMAKE_XCODE_SCHEME_ENVIRONMENT
    /variable/CMAKE_XCODE_SCHEME_ENVIRONMENT
    /variable/CMAKE_XCODE_SCHEME_GUARD_MALLOC
    /variable/CMAKE_XCODE_SCHEME_GUARD_MALLOC
    /variable/CMAKE_XCODE_SCHEME_LAUNCH_CONFIGURATION
    /variable/CMAKE_XCODE_SCHEME_LAUNCH_CONFIGURATION
+   /variable/CMAKE_XCODE_SCHEME_TEST_CONFIGURATION
    /variable/CMAKE_XCODE_SCHEME_LAUNCH_MODE
    /variable/CMAKE_XCODE_SCHEME_LAUNCH_MODE
    /variable/CMAKE_XCODE_SCHEME_LLDB_INIT_FILE
    /variable/CMAKE_XCODE_SCHEME_LLDB_INIT_FILE
    /variable/CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
    /variable/CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP

+ 2 - 1
Help/prop_tgt/XCODE_GENERATE_SCHEME.rst

@@ -30,7 +30,6 @@ at target creation time.
 - :prop_tgt:`XCODE_SCHEME_THREAD_SANITIZER_STOP`
 - :prop_tgt:`XCODE_SCHEME_THREAD_SANITIZER_STOP`
 - :prop_tgt:`XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER`
 - :prop_tgt:`XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER`
 - :prop_tgt:`XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP`
 - :prop_tgt:`XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP`
-- :prop_tgt:`XCODE_SCHEME_LAUNCH_CONFIGURATION`
 - :prop_tgt:`XCODE_SCHEME_ENABLE_GPU_API_VALIDATION`
 - :prop_tgt:`XCODE_SCHEME_ENABLE_GPU_API_VALIDATION`
 - :prop_tgt:`XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION`
 - :prop_tgt:`XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION`
 - :prop_tgt:`XCODE_SCHEME_ZOMBIE_OBJECTS`
 - :prop_tgt:`XCODE_SCHEME_ZOMBIE_OBJECTS`
@@ -44,6 +43,8 @@ The following target properties will be applied on the
 - :prop_tgt:`XCODE_SCHEME_ENABLE_GPU_FRAME_CAPTURE_MODE`
 - :prop_tgt:`XCODE_SCHEME_ENABLE_GPU_FRAME_CAPTURE_MODE`
 - :prop_tgt:`XCODE_SCHEME_ENVIRONMENT`
 - :prop_tgt:`XCODE_SCHEME_ENVIRONMENT`
 - :prop_tgt:`XCODE_SCHEME_EXECUTABLE`
 - :prop_tgt:`XCODE_SCHEME_EXECUTABLE`
+- :prop_tgt:`XCODE_SCHEME_LAUNCH_CONFIGURATION`
 - :prop_tgt:`XCODE_SCHEME_LAUNCH_MODE`
 - :prop_tgt:`XCODE_SCHEME_LAUNCH_MODE`
+- :prop_tgt:`XCODE_SCHEME_TEST_CONFIGURATION`
 - :prop_tgt:`XCODE_SCHEME_LLDB_INIT_FILE`
 - :prop_tgt:`XCODE_SCHEME_LLDB_INIT_FILE`
 - :prop_tgt:`XCODE_SCHEME_WORKING_DIRECTORY`
 - :prop_tgt:`XCODE_SCHEME_WORKING_DIRECTORY`

+ 13 - 0
Help/prop_tgt/XCODE_SCHEME_TEST_CONFIGURATION.rst

@@ -0,0 +1,13 @@
+XCODE_SCHEME_TEST_CONFIGURATION
+-------------------------------
+
+.. versionadded:: 3.32
+
+Set the build configuration to test the target.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_XCODE_SCHEME_TEST_CONFIGURATION`
+if it is set when a target is created.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.

+ 7 - 0
Help/release/dev/xcode-scheme-test-config.rst

@@ -0,0 +1,7 @@
+xcode-scheme-test-config
+------------------------
+
+* The :variable:`CMAKE_XCODE_SCHEME_TEST_CONFIGURATION` variable and corresponding
+  :prop_tgt:`XCODE_SCHEME_TEST_CONFIGURATION` target property were added to tell
+  the :generator:`Xcode` generator what to put in the scheme's "Build Configuration"
+  setting for the test action.

+ 12 - 0
Help/variable/CMAKE_XCODE_SCHEME_TEST_CONFIGURATION.rst

@@ -0,0 +1,12 @@
+CMAKE_XCODE_SCHEME_TEST_CONFIGURATION
+-------------------------------------
+
+.. versionadded:: 3.32
+
+Set the build configuration to test the target.
+
+This variable initializes the :prop_tgt:`XCODE_SCHEME_TEST_CONFIGURATION`
+property on all targets.
+
+Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
+documentation to see all Xcode schema related properties.

+ 1 - 0
Source/cmTarget.cxx

@@ -621,6 +621,7 @@ TargetProperty const StaticTargetProperties[] = {
   { "XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER"_s, IC::NeedsXcodeAndCanCompileSources },
   { "XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER"_s, IC::NeedsXcodeAndCanCompileSources },
   { "XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP"_s, IC::NeedsXcodeAndCanCompileSources },
   { "XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP"_s, IC::NeedsXcodeAndCanCompileSources },
   { "XCODE_SCHEME_LAUNCH_CONFIGURATION"_s, IC::NeedsXcodeAndCanCompileSources },
   { "XCODE_SCHEME_LAUNCH_CONFIGURATION"_s, IC::NeedsXcodeAndCanCompileSources },
+  { "XCODE_SCHEME_TEST_CONFIGURATION"_s, IC::NeedsXcodeAndCanCompileSources },
   { "XCODE_SCHEME_ENABLE_GPU_API_VALIDATION"_s, IC::NeedsXcodeAndCanCompileSources },
   { "XCODE_SCHEME_ENABLE_GPU_API_VALIDATION"_s, IC::NeedsXcodeAndCanCompileSources },
   { "XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION"_s, IC::NeedsXcodeAndCanCompileSources },
   { "XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION"_s, IC::NeedsXcodeAndCanCompileSources },
   { "XCODE_SCHEME_WORKING_DIRECTORY"_s, IC::NeedsXcodeAndCanCompileSources },
   { "XCODE_SCHEME_WORKING_DIRECTORY"_s, IC::NeedsXcodeAndCanCompileSources },

+ 6 - 1
Source/cmXCodeScheme.cxx

@@ -74,8 +74,13 @@ void cmXCodeScheme::WriteXCodeXCScheme(std::ostream& fout,
   std::string launchConfiguration =
   std::string launchConfiguration =
     !propDftCfg.IsEmpty() ? *propDftCfg : "Debug";
     !propDftCfg.IsEmpty() ? *propDftCfg : "Debug";
 
 
+  cmValue propTstCfg =
+    Target->GetTarget()->GetProperty("XCODE_SCHEME_TEST_CONFIGURATION");
+  std::string testConfiguration =
+    !propTstCfg.IsEmpty() ? *propTstCfg : "Debug";
+
   WriteBuildAction(xout, container);
   WriteBuildAction(xout, container);
-  WriteTestAction(xout, FindConfiguration("Debug"), container);
+  WriteTestAction(xout, FindConfiguration(testConfiguration), container);
   WriteLaunchAction(xout, FindConfiguration(launchConfiguration), container);
   WriteLaunchAction(xout, FindConfiguration(launchConfiguration), container);
   WriteProfileAction(xout, FindConfiguration("Release"), container);
   WriteProfileAction(xout, FindConfiguration("Release"), container);
   WriteAnalyzeAction(xout, FindConfiguration("Debug"));
   WriteAnalyzeAction(xout, FindConfiguration("Debug"));

+ 9 - 3
Tests/RunCMake/XcodeProject/XcodeSchemaProperty-check.cmake

@@ -1,8 +1,8 @@
 function(check_property property matcher)
 function(check_property property matcher)
   set(schema "${RunCMake_TEST_BINARY_DIR}/XcodeSchemaProperty.xcodeproj/xcshareddata/xcschemes/${property}.xcscheme")
   set(schema "${RunCMake_TEST_BINARY_DIR}/XcodeSchemaProperty.xcodeproj/xcshareddata/xcschemes/${property}.xcscheme")
-  file(STRINGS ${schema} actual-${property}
-       REGEX "${matcher}" LIMIT_COUNT 1)
-  if(NOT actual-${property})
+  file(READ ${schema} schema-content-${property})
+  string(REGEX MATCHALL "${matcher}" matched-${property} ${schema-content-${property}})
+  if(NOT matched-${property})
     string(APPEND RunCMake_TEST_FAILED
     string(APPEND RunCMake_TEST_FAILED
       "Xcode schema property ${property}: Could not find\n"
       "Xcode schema property ${property}: Could not find\n"
       "  ${matcher}\n"
       "  ${matcher}\n"
@@ -102,6 +102,12 @@ check_property("ENABLE_GPU_FRAME_CAPTURE_MODE_DISABLED_MIXED_CASE" "enableGPUFra
 check_property("ENABLE_GPU_FRAME_CAPTURE_MODE_METAL_MIXED_CASE" "enableGPUFrameCaptureMode=\"1\"")
 check_property("ENABLE_GPU_FRAME_CAPTURE_MODE_METAL_MIXED_CASE" "enableGPUFrameCaptureMode=\"1\"")
 check_property("LAUNCH_MODE_AUTO" "launchStyle=\"0\"")
 check_property("LAUNCH_MODE_AUTO" "launchStyle=\"0\"")
 check_property("LAUNCH_MODE_WAIT" "launchStyle=\"1\"")
 check_property("LAUNCH_MODE_WAIT" "launchStyle=\"1\"")
+check_property("LAUNCH_CONFIGURATION_EMPTY" "<LaunchAction.*buildConfiguration=\"Debug\".*</LaunchAction>")
+check_property("LAUNCH_CONFIGURATION_DEBUG" "<LaunchAction.*buildConfiguration=\"Debug\".*</LaunchAction>")
+check_property("LAUNCH_CONFIGURATION_RELEASE" "<LaunchAction.*buildConfiguration=\"Release\".*</LaunchAction>")
+check_property("TEST_CONFIGURATION_EMPTY" "<TestAction.*buildConfiguration=\"Debug\".*</TestAction>")
+check_property("TEST_CONFIGURATION_DEBUG" "<TestAction.*buildConfiguration=\"Debug\".*</TestAction>")
+check_property("TEST_CONFIGURATION_RELEASE" "<TestAction.*buildConfiguration=\"Release\".*</TestAction>")
 check_no_property("LLDB_INIT_FILE_EMPTY" "customLLDBInitFile")
 check_no_property("LLDB_INIT_FILE_EMPTY" "customLLDBInitFile")
 check_property_count("LLDB_INIT_FILE_EVAL" "customLLDBInitFile=\"${RunCMake_TEST_BINARY_DIR}/.lldbinit\"" 2)
 check_property_count("LLDB_INIT_FILE_EVAL" "customLLDBInitFile=\"${RunCMake_TEST_BINARY_DIR}/.lldbinit\"" 2)
 check_property_count("LLDB_INIT_FILE_FULL" "customLLDBInitFile=\"/full/path/to/.lldbinit\"" 2)
 check_property_count("LLDB_INIT_FILE_FULL" "customLLDBInitFile=\"/full/path/to/.lldbinit\"" 2)

+ 6 - 0
Tests/RunCMake/XcodeProject/XcodeSchemaProperty.cmake

@@ -40,6 +40,12 @@ create_scheme_for_property(ENABLE_GPU_FRAME_CAPTURE_MODE_DISABLED_MIXED_CASE ENA
 create_scheme_for_property(ENABLE_GPU_FRAME_CAPTURE_MODE_METAL_MIXED_CASE ENABLE_GPU_FRAME_CAPTURE_MODE METal)
 create_scheme_for_property(ENABLE_GPU_FRAME_CAPTURE_MODE_METAL_MIXED_CASE ENABLE_GPU_FRAME_CAPTURE_MODE METal)
 create_scheme_for_property(LAUNCH_MODE_AUTO LAUNCH_MODE AUTO)
 create_scheme_for_property(LAUNCH_MODE_AUTO LAUNCH_MODE AUTO)
 create_scheme_for_property(LAUNCH_MODE_WAIT LAUNCH_MODE WAIT)
 create_scheme_for_property(LAUNCH_MODE_WAIT LAUNCH_MODE WAIT)
+create_scheme_for_property(LAUNCH_CONFIGURATION_EMPTY LAUNCH_CONFIGURATION "")
+create_scheme_for_property(LAUNCH_CONFIGURATION_DEBUG LAUNCH_CONFIGURATION "Debug")
+create_scheme_for_property(LAUNCH_CONFIGURATION_RELEASE LAUNCH_CONFIGURATION "Release")
+create_scheme_for_property(TEST_CONFIGURATION_EMPTY TEST_CONFIGURATION "")
+create_scheme_for_property(TEST_CONFIGURATION_DEBUG TEST_CONFIGURATION "Debug")
+create_scheme_for_property(TEST_CONFIGURATION_RELEASE TEST_CONFIGURATION "Release")
 create_scheme_for_property(LLDB_INIT_FILE_EMPTY LLDB_INIT_FILE "")
 create_scheme_for_property(LLDB_INIT_FILE_EMPTY LLDB_INIT_FILE "")
 create_scheme_for_property(LLDB_INIT_FILE_EVAL LLDB_INIT_FILE "${CMAKE_BINARY_DIR}/.lldbinit")
 create_scheme_for_property(LLDB_INIT_FILE_EVAL LLDB_INIT_FILE "${CMAKE_BINARY_DIR}/.lldbinit")
 create_scheme_for_property(LLDB_INIT_FILE_FULL LLDB_INIT_FILE "/full/path/to/.lldbinit")
 create_scheme_for_property(LLDB_INIT_FILE_FULL LLDB_INIT_FILE "/full/path/to/.lldbinit")

+ 1 - 0
Tests/RunCMake/property_init/CompileSources.cmake

@@ -194,6 +194,7 @@ if (CMAKE_HOST_APPLE) # compile-guarded in CMake
       "XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER"      "ON"          "<SAME>"
       "XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER"      "ON"          "<SAME>"
       "XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP" "ON"          "<SAME>"
       "XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP" "ON"          "<SAME>"
       "XCODE_SCHEME_LAUNCH_CONFIGURATION"               "ON"          "<SAME>"
       "XCODE_SCHEME_LAUNCH_CONFIGURATION"               "ON"          "<SAME>"
+      "XCODE_SCHEME_TEST_CONFIGURATION"                 "ON"          "<SAME>"
       "XCODE_SCHEME_ENABLE_GPU_API_VALIDATION"          "ON"          "<SAME>"
       "XCODE_SCHEME_ENABLE_GPU_API_VALIDATION"          "ON"          "<SAME>"
       "XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION"       "ON"          "<SAME>"
       "XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION"       "ON"          "<SAME>"
       "XCODE_SCHEME_WORKING_DIRECTORY"                  "ON"          "<SAME>"
       "XCODE_SCHEME_WORKING_DIRECTORY"                  "ON"          "<SAME>"