parent
65ad1bbd4c
commit
419cfe30d0
@ -489,6 +489,7 @@ syn keyword cmakeProperty contained
|
||||
\ XCODE_SCHEME_GUARD_MALLOC
|
||||
\ XCODE_SCHEME_LAUNCH_CONFIGURATION
|
||||
\ XCODE_SCHEME_LAUNCH_MODE
|
||||
\ XCODE_SCHEME_LLDB_INIT_FILE
|
||||
\ XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
|
||||
\ XCODE_SCHEME_MALLOC_GUARD_EDGES
|
||||
\ XCODE_SCHEME_MALLOC_SCRIBBLE
|
||||
@ -1854,6 +1855,7 @@ syn keyword cmakeVariable contained
|
||||
\ CMAKE_XCODE_SCHEME_GUARD_MALLOC
|
||||
\ CMAKE_XCODE_SCHEME_LAUNCH_CONFIGURATION
|
||||
\ CMAKE_XCODE_SCHEME_LAUNCH_MODE
|
||||
\ CMAKE_XCODE_SCHEME_LLDB_INIT_FILE
|
||||
\ CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
|
||||
\ CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES
|
||||
\ CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE
|
||||
|
@ -495,6 +495,7 @@ Properties on Targets
|
||||
/prop_tgt/XCODE_SCHEME_GUARD_MALLOC
|
||||
/prop_tgt/XCODE_SCHEME_LAUNCH_CONFIGURATION
|
||||
/prop_tgt/XCODE_SCHEME_LAUNCH_MODE
|
||||
/prop_tgt/XCODE_SCHEME_LLDB_INIT_FILE
|
||||
/prop_tgt/XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
|
||||
/prop_tgt/XCODE_SCHEME_MALLOC_GUARD_EDGES
|
||||
/prop_tgt/XCODE_SCHEME_MALLOC_SCRIBBLE
|
||||
|
@ -296,6 +296,7 @@ Variables that Change Behavior
|
||||
/variable/CMAKE_XCODE_SCHEME_GUARD_MALLOC
|
||||
/variable/CMAKE_XCODE_SCHEME_LAUNCH_CONFIGURATION
|
||||
/variable/CMAKE_XCODE_SCHEME_LAUNCH_MODE
|
||||
/variable/CMAKE_XCODE_SCHEME_LLDB_INIT_FILE
|
||||
/variable/CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
|
||||
/variable/CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES
|
||||
/variable/CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE
|
||||
|
@ -45,4 +45,5 @@ The following target properties will be applied on the
|
||||
- :prop_tgt:`XCODE_SCHEME_ENVIRONMENT`
|
||||
- :prop_tgt:`XCODE_SCHEME_EXECUTABLE`
|
||||
- :prop_tgt:`XCODE_SCHEME_LAUNCH_MODE`
|
||||
- :prop_tgt:`XCODE_SCHEME_LLDB_INIT_FILE`
|
||||
- :prop_tgt:`XCODE_SCHEME_WORKING_DIRECTORY`
|
||||
|
15
Help/prop_tgt/XCODE_SCHEME_LLDB_INIT_FILE.rst
Normal file
15
Help/prop_tgt/XCODE_SCHEME_LLDB_INIT_FILE.rst
Normal file
@ -0,0 +1,15 @@
|
||||
XCODE_SCHEME_LLDB_INIT_FILE
|
||||
---------------------------
|
||||
|
||||
.. versionadded:: 3.32
|
||||
|
||||
Property value for ``LLDB Init File`` in the Info section of the
|
||||
generated Xcode scheme. In case the value contains generator
|
||||
expressions those are evaluated.
|
||||
|
||||
This property is initialized by the value of the variable
|
||||
:variable:`CMAKE_XCODE_SCHEME_LLDB_INIT_FILE` 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
Help/release/dev/xcode-scheme-lldb-init-file.rst
Normal file
7
Help/release/dev/xcode-scheme-lldb-init-file.rst
Normal file
@ -0,0 +1,7 @@
|
||||
xcode-scheme-lldb-init-file
|
||||
---------------------------
|
||||
|
||||
* The :variable:`CMAKE_XCODE_SCHEME_LLDB_INIT_FILE` variable and corresponding
|
||||
:prop_tgt:`XCODE_SCHEME_LLDB_INIT_FILE` target property were added to tell
|
||||
the :generator:`Xcode` generator what to put in the scheme's "LLDB Init File"
|
||||
setting.
|
13
Help/variable/CMAKE_XCODE_SCHEME_LLDB_INIT_FILE.rst
Normal file
13
Help/variable/CMAKE_XCODE_SCHEME_LLDB_INIT_FILE.rst
Normal file
@ -0,0 +1,13 @@
|
||||
CMAKE_XCODE_SCHEME_LLDB_INIT_FILE
|
||||
---------------------------------
|
||||
|
||||
.. versionadded:: 3.32
|
||||
|
||||
Property value for ``LLDB Init File`` in the Info section of the generated Xcode
|
||||
scheme.
|
||||
|
||||
This variable initializes the :prop_tgt:`XCODE_SCHEME_LLDB_INIT_FILE` property on
|
||||
all targets.
|
||||
|
||||
Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property
|
||||
documentation to see all Xcode schema related properties.
|
@ -630,6 +630,7 @@ TargetProperty const StaticTargetProperties[] = {
|
||||
{ "XCODE_SCHEME_MALLOC_GUARD_EDGES"_s, IC::NeedsXcodeAndCanCompileSources },
|
||||
{ "XCODE_SCHEME_GUARD_MALLOC"_s, IC::NeedsXcodeAndCanCompileSources },
|
||||
{ "XCODE_SCHEME_LAUNCH_MODE"_s, IC::NeedsXcodeAndCanCompileSources },
|
||||
{ "XCODE_SCHEME_LLDB_INIT_FILE"_s, IC::NeedsXcodeAndCanCompileSources },
|
||||
{ "XCODE_SCHEME_ZOMBIE_OBJECTS"_s, IC::NeedsXcodeAndCanCompileSources },
|
||||
{ "XCODE_SCHEME_MALLOC_STACK"_s, IC::NeedsXcodeAndCanCompileSources },
|
||||
{ "XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE"_s, IC::NeedsXcodeAndCanCompileSources },
|
||||
|
@ -120,6 +120,7 @@ void cmXCodeScheme::WriteTestAction(cmXMLWriter& xout,
|
||||
xout.Attribute("selectedLauncherIdentifier",
|
||||
"Xcode.DebuggerFoundation.Launcher.LLDB");
|
||||
xout.Attribute("shouldUseLaunchSchemeArgsEnv", "YES");
|
||||
WriteCustomLLDBInitFile(xout, configuration);
|
||||
|
||||
xout.StartElement("Testables");
|
||||
for (auto const* test : this->Tests) {
|
||||
@ -164,6 +165,7 @@ void cmXCodeScheme::WriteLaunchAction(cmXMLWriter& xout,
|
||||
xout.Attribute("launchStyle", value);
|
||||
}
|
||||
WriteCustomWorkingDirectory(xout, configuration);
|
||||
WriteCustomLLDBInitFile(xout, configuration);
|
||||
|
||||
xout.Attribute("ignoresPersistentStateOnLaunch", "NO");
|
||||
WriteLaunchActionBooleanAttribute(xout, "debugDocumentVersioning",
|
||||
@ -481,6 +483,18 @@ void cmXCodeScheme::WriteCustomWorkingDirectory(
|
||||
}
|
||||
}
|
||||
|
||||
void cmXCodeScheme::WriteCustomLLDBInitFile(cmXMLWriter& xout,
|
||||
const std::string& configuration)
|
||||
{
|
||||
std::string const& propertyValue =
|
||||
this->Target->GetTarget()->GetSafeProperty("XCODE_SCHEME_LLDB_INIT_FILE");
|
||||
if (!propertyValue.empty()) {
|
||||
auto customLLDBInitFile = cmGeneratorExpression::Evaluate(
|
||||
propertyValue, this->LocalGenerator, configuration);
|
||||
xout.Attribute("customLLDBInitFile", customLLDBInitFile);
|
||||
}
|
||||
}
|
||||
|
||||
std::string cmXCodeScheme::WriteVersionString()
|
||||
{
|
||||
std::ostringstream v;
|
||||
|
@ -71,6 +71,9 @@ private:
|
||||
void WriteCustomWorkingDirectory(cmXMLWriter& xout,
|
||||
const std::string& configuration);
|
||||
|
||||
void WriteCustomLLDBInitFile(cmXMLWriter& xout,
|
||||
const std::string& configuration);
|
||||
|
||||
std::string WriteVersionString();
|
||||
std::string FindConfiguration(const std::string& name);
|
||||
|
||||
|
@ -13,6 +13,48 @@ function(check_property property matcher)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(check_property_count property matcher expected_count)
|
||||
set(schema "${RunCMake_TEST_BINARY_DIR}/XcodeSchemaProperty.xcodeproj/xcshareddata/xcschemes/${property}.xcscheme")
|
||||
file(STRINGS ${schema} actual-${property}
|
||||
REGEX "${matcher}")
|
||||
if(NOT actual-${property})
|
||||
string(APPEND RunCMake_TEST_FAILED
|
||||
"Xcode schema property ${property}: Could not find\n"
|
||||
" ${matcher}\n"
|
||||
"in schema\n"
|
||||
" ${schema}\n"
|
||||
)
|
||||
set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
list(LENGTH actual-${property} match_count)
|
||||
if(NOT ${expected_count} EQUAL ${match_count})
|
||||
string(APPEND RunCMake_TEST_FAILED
|
||||
"Xcode schema property ${property}: Expected ${expected_count} matches of\n"
|
||||
" ${matcher}\n"
|
||||
"in schema\n"
|
||||
" ${schema}\n"
|
||||
"but found ${match_count}.\n\n"
|
||||
)
|
||||
set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(check_no_property property matcher)
|
||||
set(schema "${RunCMake_TEST_BINARY_DIR}/XcodeSchemaProperty.xcodeproj/xcshareddata/xcschemes/${property}.xcscheme")
|
||||
file(STRINGS ${schema} actual-${property}
|
||||
REGEX "${matcher}" LIMIT_COUNT 1)
|
||||
if(actual-${property})
|
||||
string(APPEND RunCMake_TEST_FAILED
|
||||
"Xcode schema property ${property}: Found\n"
|
||||
" ${matcher}\n"
|
||||
"which is not expected in schema\n"
|
||||
" ${schema}\n"
|
||||
)
|
||||
set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(expect_schema target)
|
||||
set(schema "${RunCMake_TEST_BINARY_DIR}/XcodeSchemaProperty.xcodeproj/xcshareddata/xcschemes/${target}.xcscheme")
|
||||
if(NOT EXISTS ${schema})
|
||||
@ -60,6 +102,9 @@ 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("LAUNCH_MODE_AUTO" "launchStyle=\"0\"")
|
||||
check_property("LAUNCH_MODE_WAIT" "launchStyle=\"1\"")
|
||||
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_FULL" "customLLDBInitFile=\"/full/path/to/.lldbinit\"" 2)
|
||||
|
||||
check_property("EXECUTABLE" "myExecutable")
|
||||
check_property("ARGUMENTS" [=["--foo"]=])
|
||||
|
@ -40,6 +40,9 @@ 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(LAUNCH_MODE_AUTO LAUNCH_MODE AUTO)
|
||||
create_scheme_for_property(LAUNCH_MODE_WAIT LAUNCH_MODE WAIT)
|
||||
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_FULL LLDB_INIT_FILE "/full/path/to/.lldbinit")
|
||||
create_scheme_for_property(EXECUTABLE EXECUTABLE myExecutable)
|
||||
create_scheme_for_property(ARGUMENTS ARGUMENTS "--foo;--bar=baz")
|
||||
create_scheme_for_property(ENVIRONMENT ENVIRONMENT "FOO=foo;BAR=bar")
|
||||
|
@ -203,6 +203,7 @@ if (CMAKE_HOST_APPLE) # compile-guarded in CMake
|
||||
"XCODE_SCHEME_MALLOC_GUARD_EDGES" "ON" "<SAME>"
|
||||
"XCODE_SCHEME_GUARD_MALLOC" "ON" "<SAME>"
|
||||
"XCODE_SCHEME_LAUNCH_MODE" "ON" "<SAME>"
|
||||
"XCODE_SCHEME_LLDB_INIT_FILE" "ON" "<SAME>"
|
||||
"XCODE_SCHEME_ZOMBIE_OBJECTS" "ON" "<SAME>"
|
||||
"XCODE_SCHEME_MALLOC_STACK" "ON" "<SAME>"
|
||||
"XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE" "ON" "<SAME>"
|
||||
|
Loading…
Reference in New Issue
Block a user