diff options
-rw-r--r-- | Source/cmGlobalXCodeGenerator.cxx | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index c366bcb..ae92a0a 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -136,8 +136,23 @@ cmGlobalGenerator* cmGlobalXCodeGenerator::New() { #if defined(CMAKE_BUILD_WITH_CMAKE) cmXcodeVersionParser parser; - if (cmSystemTools::FileExists( - "/Applications/Xcode.app/Contents/version.plist")) + std::string versionFile; + { + std::string out; + std::string::size_type pos; + if(cmSystemTools::RunSingleCommand("xcode-select --print-path", &out, 0, 0, + cmSystemTools::OUTPUT_NONE) && + (pos = out.find(".app/"), pos != out.npos)) + { + versionFile = out.substr(0, pos+5)+"Contents/version.plist"; + } + } + if(!versionFile.empty() && cmSystemTools::FileExists(versionFile.c_str())) + { + parser.ParseFile(versionFile.c_str()); + } + else if (cmSystemTools::FileExists( + "/Applications/Xcode.app/Contents/version.plist")) { parser.ParseFile ("/Applications/Xcode.app/Contents/version.plist"); |