gpt4 book ai didi

c++ - 奇怪的Qt include OSX下的目录结构

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:13:13 24 4
gpt4 key购买 nike

我正在试验 Qt header (用于与 vim 的 clang-complete 插件一起使用)。为此,我正在尝试编译一个简单的 qt 函数(注意:这不应该工作,只是尝试编译它)。

#include <QWidget>
int main(int, char**) {
QWidget* a;
}

我用

编译
clang try.cpp -o try -DQT_GUI_LIB -DQT_WIDGETS_LIB -isystem/Applications/Qt/5.6/clang_64/lib/QtCore.framework/Headers -isystem/Applications/Qt/5.6/clang_64/./mkspecs/macx-clang -isystem/Applications/Qt/5.6/clang_64/lib/QtGui.framework/Headers -isystem/Applications/Qt/5.6/clang_64/lib/QtWidgets.framework/Headers

得到错误

In file included from /Applications/Qt/5.6/clang_64/lib/QtWidgets.framework/Headers/QWidget:1:
/Applications/Qt/5.6/clang_64/lib/QtWidgets.framework/Headers/qwidget.h:37:10: fatal error:
'QtGui/qwindowdefs.h' file not found
#include <QtGui/qwindowdefs.h>

这是因为 QWidgets header 有 #include <QtGui/...>包括。这在 Linux 安装中是可以的,因为文件夹是按该顺序设置的。但在 OSX 中,文件夹具有不同的结构。每个模块的 header 都在 Qt<Module>.framework/Headers/... 内而不是 Qt<Module>/

如果 Qt 中的 .h 对于这个文件夹结构来说显然是错误的,我怎么告诉编译器 include 在哪里,使用这个文件夹结构?

最佳答案

如 - manatttta 所示,Qmake 规范“macx-clang”不公开头文件夹,例如<QtCore/*.h> ,就像在 Unix 和 Windows 配置中一样,因为它使用 Xcode 框架架构:例如<QtCore.framework/*.h> .

您可以创建别名(符号链接(symbolic link))将 QtCore.framework/headers 映射到 QtCore。请务必删除任何现有的 Qt 生成的 Makefile,以便后续构建将生成具有适当的包含路径。以下是配置的一些示例步骤:

cd <MyApp>/include

mkdir -p MacOSX/Qt/headers

cd MacOSX/Qt/headers

QT_CORE_HEADERS=<your Qt path up to verson subdirectory>/clang_64/lib/QtCore.framework/Versions/5/Headers

ln -s $QT_CORE_HEADERS QtCore

Delete existing Makefile `rm -f <MyApp>/Build/Makefile`

关于c++ - 奇怪的Qt include OSX下的目录结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37497694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com