我已经按照官方指南中提供的说明在 OSX Lion 上编译了 Qt。然后我尝试使用
gcc hello_world.cpp -o hello_world
编译以下 Hello World
#include <QApplication>
int main(int argc, char **argv)
{
QApplication app (argc, argv);
return app.exec();
}
我遇到以下错误:
hello_world.cpp:1:10: fatal error: 'QApplication' file not found
#include <QApplication>
^
1 error generated.
尝试一下
#include <QtGui/QApplication>
使用 gcc 的 -I 选项提供额外的包含位置。
gcc hello_world.cpp -I/path-to-qt/include -o hello_world
如果你这样使用它,你必须像这样使用你的包含:
#include <QtGui/QApplication>
如果您希望包含内容更短,如
#include <QApplication>
,您可以提供多个包含文件夹,如下所示:
gcc hello_world.cpp -I/path-to-qt/include/QtCore -I/path-to-qt/include/QtGui -o hello_world
但这还不是全部。您还必须提供库目录以及要链接到的库,具体操作如下:
gcc hello_world.cpp -I/path-to-qt/include/QtCore -I/path-to-qt/include/QtGui -o hello_world -L/path-to-qt/lib -lQtCore -lQtGui
使用 g++ 也更好,因为您使用的是 C++。
g++ hello_world.cpp -I/path-to-qt/include/QtCore -I/path-to-qt/include/QtGui -o hello_world -L/path-to-qt/lib -lQtCore -lQtGui
尝试使用
g++ -I<path_to_include_directory> -L<path_to_library_dir> -lQtCore
。
例如,在我的 Debian 中我会这样做:
g++ -I/usr/local/include/Qt4 -L/usr/local/lib -lQtCore -lQtGui whatever.cpp
编辑:感谢@erelender指出
QApplication
位于QtGui
库中并且它依赖于QtCore
。
如果您尝试使用 -I 标志为 gcc 添加额外的包含路径会怎样?比如:
gcc -I/usr/local/Qt-5.1.1/include hello_world.cpp -o hello_world
不确定 mac 中的路径,但在 Linux 上是 QApplication 类 定义在以下位置 (qt4)
/usr/include/qt4/QtGui/qwindowdefs.h
Mac 上有类似的东西吗?
如果您从命令行构建,则可以使用以下开关来完成包含 gcc 的头文件
-I<path to .h file>