a412b02f9682fc2e4c398e939a213baea9bbf014
 Source/cmGlobalXCodeGenerator.cxx | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx
index 56228f5..975d46d 100644
--- a/Source/cmGlobalXCodeGenerator.cxx
+++ b/Source/cmGlobalXCodeGenerator.cxx
@@ -3131,6 +3131,7 @@ void cmGlobalXCodeGenerator
 
   // Put this last so it can override existing settings
   // Convert "CMAKE_XCODE_ATTRIBUTE_*" variables directly.
+  bool haveCustomSymRoot = false;
   {
     std::vector<std::string> vars = this->CurrentMakefile->GetDefinitions();
     for(std::vector<std::string>::const_iterator i = vars.begin();
@@ -3141,13 +3142,19 @@ void cmGlobalXCodeGenerator
         buildSettings->AddAttribute(i->substr(22).c_str(),
           this->CreateString(
             this->CurrentMakefile->GetDefinition(i->c_str())));
+
+        if (false == haveCustomSymRoot && "CMAKE_XCODE_ATTRIBUTE_SYMROOT")
+            haveCustomSymRoot = true;
       }
     }
   }
 
-  std::string symroot = root->GetMakefile()->GetCurrentOutputDirectory();
-  symroot += "/build";
-  buildSettings->AddAttribute("SYMROOT", this->CreateString(symroot.c_str()));
+  if (false == haveCustomSymRoot)
+  {
+    std::string symroot = root->GetMakefile()->GetCurrentOutputDirectory();
+    symroot += "/build";
+    buildSettings->AddAttribute("SYMROOT", this->CreateString(symroot.c_str()));
+  }
 
   for( std::vector<cmXCodeObject*>::iterator i = configs.begin();
        i != configs.end(); ++i)
