在OS X上,$QTDIR的正确设置是什么?

4
我正在尝试安装QtROOT,作为安装的一部分(具体来说,在位于http://root.bnl.gov/QtRoot/downloads/qtFullRoot.tar.gz的QtROOT tarball中的readme文件中),它提到要确保QTDIR已设置。我已经从Mac OS X的Qt 4.6.3 SDK安装进行了安装,但我没有设置这样的环境变量。我尝试过谷歌搜索以找出应该将其设置在哪里,但我找到的选项(例如/usr/local/qt)不存在。这个变量应该设置成什么?
OS X 10.6.4,Qt 4.6.3,ROOT 5.26/00,QtROOT...我不知道:P
谢谢,
保罗
3个回答

7
Qt的打包安装程序在OSX上将东西分散到/Developer和/Library目录中,而不像其他基于Unix的系统一样安装到自包含位置/usr/local或/opt/local。顺便说一下,Qt在这方面遵循苹果的做法,因此它并没有错 - 它只是不同 - 但这确实使得某些第三方Qt应用程序在OSX上构建起来有些困难。打包的Qt安装程序本身在这个主题上有以下内容:
“成功安装后,您可以在/Developer中找到大多数新内容。具体而言,内容将位于以下位置: Qt Designer、Qt Linguist:/Developer/Applications/Qt Qt文档:/Developer/Documentation/Qt Qt示例:/Developer/Examples/Qt Qt插件:/Developer/Applications/Qt/Plugins Qt框架:/Library/Frameworks Qt库:/usr/lib qmake、moc、uic等:/Developer/Tools/Qt(符号链接到/usr/bin) 卸载脚本:/Developer/Tools/uninstall-qt.py”

因此,它确实将库放置在'/usr/lib'中,并将基本的Qt工具(例如qmake)符号链接到'/usr/bin'中。这表明QTDIR可以设置为'/usr'。然而,在实践中,这并不起作用,因为qt头文件仍然嵌套在'/Library/Frameworks/Qt*/Headers/*.h'中,而依赖于$QTDIR的构建最终会尝试在"${QTDIR}/include/"中查找qt头文件。

绕过所有这些的最简单方法是从源代码构建Qt。安装位置的默认值将类似于/usr/local/Trolltech/Qt-4.6.3(请注意版本号,并进行相应调整)。您可以通过在./configure上使用-prefix选项来覆盖默认安装位置。

一个更简单的方法是让macports为您构建它。这是我最终采取的方法(也很成功)。如果您还没有安装,请先安装macports。然后执行以下操作:

> sudo port selfupdate
> sudo port install qt4-mac

Macports会发挥它的魔力,完成后Qt将完整安装在/opt/local/libexec/qt4-mac

无论你如何构建Qt,都需要准备数小时的时间来进行完整构建。这是一个非常庞大的代码库。


这是一个真正出色的回答。虽然我已经通过艰苦的方式掌握了大部分内容,但仍然非常优秀。巧合的是,在我的2005-6年款MBP上进行完整构建需要大约12个小时左右(我现在不得不这样做三到四次,想想看)。 - PTTHomps
1
这个不再起作用了。它没有安装那个目录中的所有内容。 - Olivier Lalonde

1
我需要在我的Mac上安装LiteIDE,在安装指南中,QTDIR是必需的。我通过brew install qt --build-from-source使用homebrew安装了qt,在RMBP上大约需要2个小时。安装完成后,仍然没有QTDIR路径。通过检查build_osx.sh,我知道它只是bin文件夹的父文件夹。所以我通过export QTDIR=/usr/local/Cellar/qt/4.8.6设置了路径。然后再次运行./build_osx.sh,它就可以工作了。
希望这对您有所帮助。

1
不需要从源代码构建QT。我通过brew install qt使用brew安装了qt,然后成功地构建了LiteIDE。 - Vince Yuan
我已经更新了指导并向作者发送了拉取请求。希望能够为其他人节省几个小时的时间。感谢您的回答! - Vince Yuan

1

我没有使用安装程序安装Qt(而是自己编译),所以不知道默认位置。

但是,您安装Qt的位置就是您的QTDIR。 搜索qmake,它应该驻留在某个bin/文件夹中。上一个路径就是QTDIR($QTDIR/bin/qmake)。 通常这些天设置QTDIR来构建一个Qt项目已经不再必要,只需将qmake设置到PATH中,然后找到其他一切即可。但是某些项目可能仍需要它(如果它们使用仍使用QTDIR的自定义构建系统)。


那么,如果是这样的话,那应该是 /usr。看起来正确吗? - PTTHomps
作为一些额外的信息,QtROOT似乎决定反其道而行。它不仅要求设置QTDIR,还会在构建QtROOT包的同一目录中安装它。而不是在你预期找到它的/usr/local/Trolltech/目录下。 <耸肩> - PTTHomps
你在 /usr/bin 中有 qmake 吗?哇,听起来很奇怪(谁想让 Qt 来搞乱系统的 /usr 目录呢?)。或者像你最后一条评论所建议的那样,在 /usr/local/Trolltech/.../bin/qmake 中?那么 /usr/local/Trolltech/... 就是你的 QTDIR。("..." = 其他中间目录) - Frank Osterfeld

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接