Xcode: Run xcode-select to find Xcode version file (#13463)

Multiple versions of Xcode may be installed in different locations.
Run "xcode-select --print-path" to detect the active Xcode location
and parse its Contents/version.plist file.  Note that the Xcode.app
directory name may vary in developer versions.
This commit is contained in:
Brad King 2012-08-10 11:58:47 -04:00
parent 2c061d5cc9
commit e88bae77c3
1 changed files with 17 additions and 2 deletions

View File

@ -136,8 +136,23 @@ cmGlobalGenerator* cmGlobalXCodeGenerator::New()
{ {
#if defined(CMAKE_BUILD_WITH_CMAKE) #if defined(CMAKE_BUILD_WITH_CMAKE)
cmXcodeVersionParser parser; cmXcodeVersionParser parser;
if (cmSystemTools::FileExists( std::string versionFile;
"/Applications/Xcode.app/Contents/version.plist")) {
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 parser.ParseFile
("/Applications/Xcode.app/Contents/version.plist"); ("/Applications/Xcode.app/Contents/version.plist");