diff options
Diffstat (limited to 'Source/cmXCodeScheme.cxx')
-rw-r--r-- | Source/cmXCodeScheme.cxx | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/Source/cmXCodeScheme.cxx b/Source/cmXCodeScheme.cxx index a1c64ed..afc95f5 100644 --- a/Source/cmXCodeScheme.cxx +++ b/Source/cmXCodeScheme.cxx @@ -137,7 +137,9 @@ void cmXCodeScheme::WriteLaunchAction(cmXMLWriter& xout, xout.Attribute("launchStyle", "0"); xout.Attribute("useCustomWorkingDirectory", "NO"); xout.Attribute("ignoresPersistentStateOnLaunch", "NO"); - xout.Attribute("debugDocumentVersioning", "YES"); + WriteLaunchActionBooleanAttribute(xout, "debugDocumentVersioning", + "XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING", + true); xout.Attribute("debugServiceExtension", "internal"); xout.Attribute("allowLocationSimulation", "YES"); @@ -311,6 +313,21 @@ bool cmXCodeScheme::WriteLaunchActionAttribute(cmXMLWriter& xout, return false; } +bool cmXCodeScheme::WriteLaunchActionBooleanAttribute( + cmXMLWriter& xout, const std::string& attrName, const std::string& varName, + bool defaultValue) +{ + auto property = Target->GetTarget()->GetProperty(varName); + bool isOn = (property == nullptr && defaultValue) || cmIsOn(property); + + if (isOn) { + xout.Attribute(attrName.c_str(), "YES"); + } else { + xout.Attribute(attrName.c_str(), "NO"); + } + return isOn; +} + bool cmXCodeScheme::WriteLaunchActionAdditionalOption( cmXMLWriter& xout, const std::string& key, const std::string& value, const std::string& varName) @@ -339,7 +356,9 @@ void cmXCodeScheme::WriteProfileAction(cmXMLWriter& xout, xout.Attribute("shouldUseLaunchSchemeArgsEnv", "YES"); xout.Attribute("savedToolIdentifier", ""); xout.Attribute("useCustomWorkingDirectory", "NO"); - xout.Attribute("debugDocumentVersioning", "YES"); + WriteLaunchActionBooleanAttribute(xout, "debugDocumentVersioning", + "XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING", + true); xout.EndElement(); } |