Forráskód Böngészése

Xcode: Add settings to control a scheme's launch configuration

PatriceJiang 3 éve
szülő
commit
740bee97bd

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

@@ -447,6 +447,7 @@ syn keyword cmakeProperty contained
             \ XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
             \ XCODE_SCHEME_ENABLE_GPU_API_VALIDATION
             \ XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION
+            \ XCODE_SCHEME_LAUNCH_CONFIGURATION
             \ XCODE_SCHEME_WORKING_DIRECTORY
             \ XCODE_SCHEME_ZOMBIE_OBJECTS
             \ XCTEST
@@ -1551,6 +1552,7 @@ syn keyword cmakeVariable contained
             \ CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
             \ CMAKE_XCODE_SCHEME_ENABLE_GPU_API_VALIDATION
             \ CMAKE_XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION
+            \ CMAKE_XCODE_SCHEME_LAUNCH_CONFIGURATION
             \ CMAKE_XCODE_SCHEME_WORKING_DIRECTORY
             \ CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS
             \ CPACK_ABSOLUTE_DESTINATION_FILES

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

@@ -476,6 +476,7 @@ Properties on Targets
    /prop_tgt/XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
    /prop_tgt/XCODE_SCHEME_ENABLE_GPU_API_VALIDATION
    /prop_tgt/XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION
+   /prop_tgt/XCODE_SCHEME_LAUNCH_CONFIGURATION
    /prop_tgt/XCODE_SCHEME_WORKING_DIRECTORY
    /prop_tgt/XCODE_SCHEME_ZOMBIE_OBJECTS
    /prop_tgt/XCODE_XCCONFIG

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

@@ -287,6 +287,7 @@ Variables that Change Behavior
    /variable/CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP
    /variable/CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER
    /variable/CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
+   /variable/CMAKE_XCODE_SCHEME_LAUNCH_CONFIGURATION
    /variable/CMAKE_XCODE_SCHEME_ENABLE_GPU_API_VALIDATION
    /variable/CMAKE_XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION
    /variable/CMAKE_XCODE_SCHEME_WORKING_DIRECTORY

+ 1 - 0
Help/prop_tgt/XCODE_GENERATE_SCHEME.rst

@@ -30,6 +30,7 @@ at target creation time.
 - :prop_tgt:`XCODE_SCHEME_THREAD_SANITIZER_STOP`
 - :prop_tgt:`XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER`
 - :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_SHADER_VALIDATION`
 - :prop_tgt:`XCODE_SCHEME_ZOMBIE_OBJECTS`

+ 13 - 0
Help/prop_tgt/XCODE_SCHEME_LAUNCH_CONFIGURATION.rst

@@ -0,0 +1,13 @@
+XCODE_SCHEME_LAUNCH_CONFIGURATION
+---------------------------------
+
+.. versionadded:: 3.25
+
+Set the build configuration to run the target.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_XCODE_SCHEME_LAUNCH_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.

+ 5 - 0
Help/release/dev/xcode-launch-mode.rst

@@ -5,3 +5,8 @@ xcode-launch-mode
   :prop_tgt:`XCODE_SCHEME_LAUNCH_MODE` target property were added to tell
   the :generator:`Xcode` generator what to put in the scheme's "Launch"
   mode setting.
+
+* The :variable:`CMAKE_XCODE_SCHEME_LAUNCH_CONFIGURATION` variable and
+  corresponding :prop_tgt:`XCODE_SCHEME_LAUNCH_CONFIGURATION` target
+  property were added to tell the :generator:`Xcode` generator what
+  configuration to put in the scheme's Launch action.

+ 12 - 0
Help/variable/CMAKE_XCODE_SCHEME_LAUNCH_CONFIGURATION.rst

@@ -0,0 +1,12 @@
+CMAKE_XCODE_SCHEME_LAUNCH_CONFIGURATION
+---------------------------------------
+
+.. versionadded:: 3.25
+
+Set the build configuration to run the target.
+
+This variable initializes the :prop_tgt:`XCODE_SCHEME_LAUNCH_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

@@ -620,6 +620,7 @@ cmTarget::cmTarget(std::string const& name, cmStateEnums::TargetType type,
       initProp("XCODE_SCHEME_THREAD_SANITIZER_STOP");
       initProp("XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER");
       initProp("XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP");
+      initProp("XCODE_SCHEME_LAUNCH_CONFIGURATION");
       initProp("XCODE_SCHEME_ENABLE_GPU_API_VALIDATION");
       initProp("XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION");
       initProp("XCODE_SCHEME_WORKING_DIRECTORY");

+ 6 - 1
Source/cmXCodeScheme.cxx

@@ -67,9 +67,14 @@ void cmXCodeScheme::WriteXCodeXCScheme(std::ostream& fout,
   xout.Attribute("LastUpgradeVersion", WriteVersionString());
   xout.Attribute("version", "1.3");
 
+  cmValue propDftCfg =
+    Target->GetTarget()->GetProperty("XCODE_SCHEME_LAUNCH_CONFIGURATION");
+  std::string launchConfiguration =
+    !propDftCfg.IsEmpty() ? *propDftCfg : "Debug";
+
   WriteBuildAction(xout, container);
   WriteTestAction(xout, FindConfiguration("Debug"), container);
-  WriteLaunchAction(xout, FindConfiguration("Debug"), container);
+  WriteLaunchAction(xout, FindConfiguration(launchConfiguration), container);
   WriteProfileAction(xout, FindConfiguration("Release"));
   WriteAnalyzeAction(xout, FindConfiguration("Debug"));
   WriteArchiveAction(xout, FindConfiguration("Release"));