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)
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");