在 Mac 上找不到 Qt 库
Posted
技术标签:
【中文标题】在 Mac 上找不到 Qt 库【英文标题】:Qt Libraries cannot be found on Mac 【发布时间】:2014-03-03 11:52:38 【问题描述】:我在 Mac 10.9.1 上设置 Qt 环境时遇到问题。如果我只是尝试用标准编译一个 C++ 文件
g++ source.cpp -o output然后没有找到 Qt 库。例如,如果我有
#include <QString>
然后我会得到错误
致命错误:找不到“QString”文件
我已经安装了 Qt 5.2.1 并将其添加到我的 PATH 变量中,所以现在当我使用
制作项目时qmake -project, qmake -spec macx-g++ 然后make
我收到错误消息,指出我的 Mac OSX 版本不受支持。我必须使用 Qt 来完成我的大学作业,请有人帮我设置一下。
任何帮助将不胜感激。
【问题讨论】:
This 可能有用 ;-) 嗯,以前的版本兼容小牛吗?我一直在四处寻找,但找不到太多。此外,它没有说明如何删除我已经安装的 Qt 版本。问题。 Qt 5.2.1 支持 Mavericks。您安装了哪个 XCode,是否安装了 XCode CLI 工具? 不确定 XCode 版本,但我确实安装了 CLI 工具。 【参考方案1】:Qt 5 肯定支持 Mavericks。到目前为止,Qt 4 不支持它; ***foe 在他的评论中打错了 (nomen est omen?)。
您的错误是使用了错误的制造规范。 Qt 5 使用 clang,而不是 gcc。因此以下对我有用(不设置任何路径):
~/Qt5.2.1/5.2.1/clang_64/bin/qmake -project
~/Qt5.2.1/5.2.1/clang_64/bin/qmake -spec macx-clang
make
您可以同时存在多个 Qt 版本,当您安装新的 Qt 版本时没有理由卸载任何东西。
下面是一个独立的小示例。将其放在simple
文件夹中。要构建,请执行以下操作:
~/Qt5.2.1/5.2.1/clang_64/bin/qmake -spec macx-clang
make
您不想通过使用 -project
参数调用 qmake 来重新生成 .pro 文件。项目生成只是给你一个简单的骨架,你应该只是为了方便导入第三方代码。
请注意,根据定义,如果您使用任何可见的 GUI 元素(窗口、消息框等),就 Qt 而言,它不再是控制台应用程序。
# simple.pro
TEMPLATE = app
QT += widgets
# Creates a simple executable instead of an app bundle
CONFIG -= app_bundle
SOURCES += main.cpp
// main.cpp
#include <QApplication>
#include <QMessageBox>
int main(int argc, char ** argv)
// It is an error not to have an instance of QApplication.
// This implies that having an instance of QCoreApplication and QGuiApplication
// is also an error.
QApplication app(argc, argv);
QMessageBox::information(NULL, "Get This!", "Something's going on");
【讨论】:
@nickcorin 你不能运行什么“脚本”?你的意思是你不能运行可执行文件?好吧,您只需提供可执行文件的完整路径。它在 .app 包中。如果这些是控制台项目,那么您必须编辑 .pro 文件以使其如此。 是的,我们从小做起,所以目前我们正在制作控制台项目,可能只有一两个 QMessageBox。 有些库好像还是找不到。 QString 和 QTextStream 工作正常,但例如找不到 QApplication,QMessageBox 或 QWidgets 也找不到。 通过将 QT += 小部件添加到我的 .pro 文件中并再次运行 qmake,我设法让一些库正常工作。现在,每次我尝试使用 QMessageBox 运行应用程序时,应用程序都会立即崩溃并显示“Abort Trap: 6”。 @nickorin 您必须发布一个单独的问题,其中包含一个演示崩溃的最小测试用例。您需要显示 .pro 和 main.cpp 文件的内容。以上是关于在 Mac 上找不到 Qt 库的主要内容,如果未能解决你的问题,请参考以下文章