|
@@ -8,13 +8,16 @@
|
|
|
#include <utility>
|
|
|
|
|
|
#include "cmGeneratedFileStream.h"
|
|
|
+#include "cmGeneratorExpression.h"
|
|
|
#include "cmGeneratorTarget.h"
|
|
|
#include "cmXMLSafe.h"
|
|
|
|
|
|
-cmXCodeScheme::cmXCodeScheme(cmXCodeObject* xcObj, TestObjects tests,
|
|
|
+cmXCodeScheme::cmXCodeScheme(cmLocalGenerator* lg, cmXCodeObject* xcObj,
|
|
|
+ TestObjects tests,
|
|
|
const std::vector<std::string>& configList,
|
|
|
unsigned int xcVersion)
|
|
|
- : Target(xcObj)
|
|
|
+ : LocalGenerator(lg)
|
|
|
+ , Target(xcObj)
|
|
|
, Tests(std::move(tests))
|
|
|
, TargetName(xcObj->GetTarget()->GetName())
|
|
|
, ConfigList(configList)
|
|
@@ -135,7 +138,8 @@ void cmXCodeScheme::WriteLaunchAction(cmXMLWriter& xout,
|
|
|
xout.Attribute("selectedLauncherIdentifier",
|
|
|
"Xcode.DebuggerFoundation.Launcher.LLDB");
|
|
|
xout.Attribute("launchStyle", "0");
|
|
|
- xout.Attribute("useCustomWorkingDirectory", "NO");
|
|
|
+ WriteCustomWorkingDirectory(xout, configuration);
|
|
|
+
|
|
|
xout.Attribute("ignoresPersistentStateOnLaunch", "NO");
|
|
|
WriteLaunchActionBooleanAttribute(xout, "debugDocumentVersioning",
|
|
|
"XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING",
|
|
@@ -355,7 +359,7 @@ void cmXCodeScheme::WriteProfileAction(cmXMLWriter& xout,
|
|
|
xout.Attribute("buildConfiguration", configuration);
|
|
|
xout.Attribute("shouldUseLaunchSchemeArgsEnv", "YES");
|
|
|
xout.Attribute("savedToolIdentifier", "");
|
|
|
- xout.Attribute("useCustomWorkingDirectory", "NO");
|
|
|
+ WriteCustomWorkingDirectory(xout, configuration);
|
|
|
WriteLaunchActionBooleanAttribute(xout, "debugDocumentVersioning",
|
|
|
"XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING",
|
|
|
true);
|
|
@@ -395,6 +399,22 @@ void cmXCodeScheme::WriteBuildableReference(cmXMLWriter& xout,
|
|
|
xout.EndElement();
|
|
|
}
|
|
|
|
|
|
+void cmXCodeScheme::WriteCustomWorkingDirectory(
|
|
|
+ cmXMLWriter& xout, const std::string& configuration)
|
|
|
+{
|
|
|
+ std::string propertyValue = this->Target->GetTarget()->GetSafeProperty(
|
|
|
+ "XCODE_SCHEME_WORKING_DIRECTORY");
|
|
|
+ if (propertyValue.empty()) {
|
|
|
+ xout.Attribute("useCustomWorkingDirectory", "NO");
|
|
|
+ } else {
|
|
|
+ xout.Attribute("useCustomWorkingDirectory", "YES");
|
|
|
+
|
|
|
+ auto customWorkingDirectory = cmGeneratorExpression::Evaluate(
|
|
|
+ propertyValue, this->LocalGenerator, configuration);
|
|
|
+ xout.Attribute("customWorkingDirectory", customWorkingDirectory);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
std::string cmXCodeScheme::WriteVersionString()
|
|
|
{
|
|
|
std::ostringstream v;
|