无法使用 Xcode 4.3 安装 autotest-fsevent gem

Posted

技术标签:

【中文标题】无法使用 Xcode 4.3 安装 autotest-fsevent gem【英文标题】:Unable to install autotest-fsevent gem with Xcode 4.3 【发布时间】:2012-02-20 16:56:56 【问题描述】:

更新到 Xcode 4.3(删除旧版本的 Xcode)后,我无法安装 autotest-fsevent gem。命令行工具是通过 Preferences > Downloads > Components 选项卡安装的。

osx 10.7.3、rvm 1.10.2、ruby 1.9.3-rc1、捆绑器 1.0.22

$ bundle

Installing autotest-fsevent (0.2.7) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

    /Users/doc/.rvm/rubies/ruby-1.9.3-rc1/bin/ruby extconf.rb 
extconf.rb:36:in `<main>': Xcode not found - see README for assistance (RuntimeError)


Gem files will remain installed in /Users/doc/.rvm/gems/ruby-1.9.3-rc1@global/gems/autotest-fsevent-0.2.7 for inspection.
Results logged to /Users/doc/.rvm/gems/ruby-1.9.3-rc1@global/gems/autotest-fsevent-0.2.7/ext/fsevent/gem_make.out
An error occured while installing autotest-fsevent (0.2.7), and Bundler cannot continue.
Make sure that `gem install autotest-fsevent -v '0.2.7'` succeeds before bundling.

README 仅表明需要 Xcode。

我似乎选择了正确的 Xcode.app:

$ xcode-select -print-path
/Applications/Xcode.app/Contents/Developer

其他人有这个问题吗?任何想法如何解决这个问题?

【问题讨论】:

【参考方案1】:

原来 Xcode 路径是硬编码在 gem 文件中的:

ext/fsevent/extconf.rb:

...
  elsif File.exists?('/Developer/Applications/Xcode.app')
    `CFLAGS='-isysroot /Developer/SDKs/MacOSX#SDK_VERSION.sdk -mmacosx-version-min=#SDK_VERSION' /usr/bin/gcc -framework CoreServices -o "#GEM_ROOT/bin/fsevent_sleep" fsevent_sleep.c`
    raise "\e[1;31mCompilation of fsevent_sleep binary failed - see README for assistance\e[0m" unless File.executable?("#GEM_ROOT/bin/fsevent_sleep")
...

Xcode 4.3 现在作为应用程序安装在 /Applications 中。另一个 github 用户 (fxposter) 发现了同样的问题,并在我的几个小时前发布了 pull request。提议的更改已合并到 gem 中,v0.2.8 已发布。

【讨论】:

以上是关于无法使用 Xcode 4.3 安装 autotest-fsevent gem的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 TestFlight 安装 xCode 4.3 beta 应用程序

安装新的 xcode 4.3 后找不到 stdio.h

Xcode 4.3 没有正确链接到 ZbarSDK

XCode 4.3 无法加载持久存储 UserDictionary.sqlite

如何强制安装 Xcode 4.3?

Xcode 4.3 和 iOS 3.x 设备上的调试