我正在尝试从 Qt 网站的小部件示例部分运行模拟时钟示例。 (如果您尝试运行该文件,请注意示例代码在文件的最末尾缺少右大括号。)
我能够使用 cmake 成功构建并运行该文件(经过一些小麻烦,因为其中一个语句需要 Qt 6.6,但 Ubuntu 只会加载 6.2.4)。
对于简单的、只有一个源文件的项目,我更喜欢使用普通的 g++ 而不是复杂的构建系统。 Cmake 实际上默认为 g++。
我的源文件包含以下行:
#include <QWidget>
我的 g++ 命令行是:
g++ -std=c++23 -I/usr/include/x86_64-linux-gnu/qt6:/usr/include/x86_64-linux-gnu/qt6/QtWidgets analogclock.cpp
我得到的错误是:
analogclock.cpp:6:10: fatal error: QWidget: No such file or directory
6 | #include <QWidget>
| ^~~~~~~~~
QtWidgets 目录就在那里,它确实包含 QWidget 文件。 (我需要 -I 列表的第一个组件以避免不同的错误。)
我已经有一段时间没有使用 g++ 了,所以显然我做错了什么。请帮忙。
编辑:@Laughing Out Clouds 提供的链接并未解决该问题。该链接中的所有答案和评论都使用 qmake 和/或项目文件。没有一个解决方案能够解决纯 g++ 方法。我已经知道我可以使用 cmake 运行该文件及其复杂的要求。
您的
g++
命令行包含无效的 -I
选项:
-I/usr/include/x86_64-linux-gnu/qt6:/usr/include/x86_64-linux-gnu/qt6/QtWidgets
您不能通过用
-I
分隔它们来向 :
选项提供多个目录参数。 g++
认为您正在指定一个名为: 的单个目录
/usr/include/x86_64-linux-gnu/qt6:/usr/include/x86_64-linux-gnu/qt6/QtWidgets
并且没有给出任何错误。如果您希望指定多个包含路径(这很常见), 根据需要使用尽可能多的
-I
选项,并按照您搜索的优先顺序给出它们
想要:
-I/usr/include/x86_64-linux-gnu/qt6 -I/usr/include/x86_64-linux-gnu/qt6/QtWidgets