我可以使用homebrew的qt5和capybara-webkit吗?

时间:2013-06-12 21:07:28

标签: qt homebrew qtwebkit capybara-webkit

我想将qt5的QtWebKitcapybara-webkit一起使用。

brew uninstall qt
Uninstalling /usr/local/Cellar/qt/4.8.4...
brew install qt5
This formula is keg-only: so it was not symlinked into /usr/local.
  /usr/local/Cellar/qt5/5.0.2: 3103 files, 140M, built in 60.9 minutes

如果我强制brew为qt5创建符号链接,我可以为capybara-webkit构建原生扩展名。

brew link --force qt5
Linking /usr/local/Cellar/qt5/5.0.2... 122 symlinks created
gem install capybara-webkit -v '1.0.0'
Successfully installed capybara-webkit-1.0.0

..但是webkit_server很难崩溃..

bundle exec rake test:integration
Errno::EADDRNOTAVAIL: Can't assign requested address - connect(2)
dyld: Library not loaded: /private/tmp/qt5-KytU/qt-everywhere-opensource-src-5.0.2/qtwebkit/lib/QtWebKit.framework/Versions/5/QtWebKit
  Referenced from: /usr/local/opt/qt5/lib/QtWebKitWidgets.framework/Versions/5/QtWebKitWidgets
  Reason: image not found

请参阅full osx crash report

我尝试使用LDFLAGSCPPFLAGS安装capybara-webkit,但webkit_server仍然很难崩溃。

env LDFLAGS=-L/usr/local/opt/qt5/lib \
  CPPFLAGS=-I/usr/local/opt/qt5/include \
  gem install capybara-webkit -v '1.0.0'

4 个答案:

答案 0 :(得分:28)

  

注意: IAmNaN在这里...这个答案适用于El Cap和Yosemite,但它与MacOS Sierra不再相关。而是按照Thoughtbot中的说明操作。总结一下......

     
      
  1. 下载并安装新的Qt from here
  2.   
  3. 修改~/Qt5.5.1/5.5/clang_64/mkspecs/features/mac/default_pre.prf
  4.   
  5. 在第15行周围找到并将-find xcrun 2替换为-find xcodebuild 2
  6.   
  7. 保存并运行PATH=~/Qt5.5.1/5.5/clang_64/bin:$PATH gem install capybara-webkit
  8.         

    现在回到我们定期安排的答案......

我让这个在OSX Yosemite上工作。构建Qt5的原因是为了获得一些不在Qt4中的修复,这些修复阻止了capybara-webkit在某些情况下使用字体和样式表资产。

从你的gemfile中注释掉capybara和capybara-webkit gems。然后:

bundle
gem uninstall capybara-webkit
gem uninstall capybara # if it complains about dependencies 'gem uninstall' them first
brew remove qt
brew remove qt5 # if you've been playing around

从干净的环境(重启终端):

brew tap homebrew/versions
brew install qt55
brew linkapps qt55
brew link --force qt55

在gemfile中取消注释capybara和capybara-webkit,然后:

bundle install

注意:您可以放心地忽略" brew unlink" brew doctor发出的警告。

答案 1 :(得分:7)

两年后,我的问题中的相同步骤现在起作用了。谢谢,无论谁修理它。

gem uninstall --all capybara-webkit
brew remove qt
brew install qt5
brew linkapps qt5 # optional?
brew link --force qt5
gem install capybara-webkit

安装qt5之后,我不再从我的测试套件中看到此消息:

WARNING: The next major version of capybara-webkit will require at least version 5.0 of Qt.

不需要卸载capybara gem(正如其他答案所示),因为它没有原生扩展,因此没有直接依赖QT。

答案 2 :(得分:4)

根据https://github.com/thoughtbot/capybara-webkit/issues/885,QT在5.6版停止使用webkit。但是,有一个qt55 brew可用,因此在上面的答案中使用qt55(而不是qt5)。

答案 3 :(得分:0)

我建议brew updatebrew remove qt5brew install qt5,因为我在我的系统上找到了:

xcrun otool -L /usr/local/Cellar/qt5/5.0.2/lib/QtWebKitWidgets.framework/Versions/5/QtWebKitWidgets
[snip] 
/usr/local/Cellar/qt5/5.0.2/src/qtwebkit/lib/QtWebKit.framework/Versions/5/QtWebKit (compatibility version 5.0.0, current version 5.0.2)

所以Qt5会链接到QtWebKit,并且该链接在我的系统上有效,与您的系统不同。 因此建议重新安装。如果自制软件安装了预制的瓶子并且仍有此问题,请在github上报告Homebrew的问题跟踪器。我从源头安装了我的。

但是,我猜一个上游问题(一个小问题)是链接指向src,可能lib。但这要由Qt修复。