Merge topic 'evaluate-stdstring'

16e17376c7 EvaluateExpression() returns std::string

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2293
diff --git a/Source/cmGeneratorExpression.cxx b/Source/cmGeneratorExpression.cxx
index f26c717..b1b2b88 100644
--- a/Source/cmGeneratorExpression.cxx
+++ b/Source/cmGeneratorExpression.cxx
@@ -390,7 +390,7 @@
   const char* expression, const std::string& property)
 {
   if (this->Target.empty()) {
-    return this->EvaluateExpression(expression);
+    return this->EvaluateExpression(expression).c_str();
   }
 
   // Specify COMPILE_OPTIONS to DAGchecker, same semantic as COMPILE_FLAGS
@@ -398,5 +398,5 @@
     this->Target, property == "COMPILE_FLAGS" ? "COMPILE_OPTIONS" : property,
     nullptr, nullptr);
 
-  return this->EvaluateExpression(expression, &dagChecker);
+  return this->EvaluateExpression(expression, &dagChecker).c_str();
 }
diff --git a/Source/cmGeneratorExpression.h b/Source/cmGeneratorExpression.h
index 2899317..1ceb7da 100644
--- a/Source/cmGeneratorExpression.h
+++ b/Source/cmGeneratorExpression.h
@@ -181,7 +181,7 @@
 
   const char* Evaluate(const char* expression)
   {
-    return this->EvaluateExpression(expression);
+    return this->EvaluateExpression(expression).c_str();
   }
   const char* Evaluate(const std::string& expression)
   {
@@ -212,7 +212,7 @@
   const std::string& GetTargetName() const { return this->Target; }
   const std::string& GetLanguage() const { return this->Language; }
 
-  const char* EvaluateExpression(
+  const std::string& EvaluateExpression(
     const char* expression,
     cmGeneratorExpressionDAGChecker* dagChecker = nullptr)
   {
@@ -220,16 +220,13 @@
       this->GeneratorExpression.Parse(expression);
 
     if (dagChecker == nullptr) {
-      return this->CompiledGeneratorExpression
-        ->Evaluate(this->LocalGenerator, this->Config, false,
-                   this->GeneratorTarget)
-        .c_str();
+      return this->CompiledGeneratorExpression->Evaluate(
+        this->LocalGenerator, this->Config, false, this->GeneratorTarget);
     }
 
-    return this->CompiledGeneratorExpression
-      ->Evaluate(this->LocalGenerator, this->Config, false,
-                 this->GeneratorTarget, dagChecker, this->Language)
-      .c_str();
+    return this->CompiledGeneratorExpression->Evaluate(
+      this->LocalGenerator, this->Config, false, this->GeneratorTarget,
+      dagChecker, this->Language);
   }
 
 private: