首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >奇怪的Qt包括OSX下的dir结构

奇怪的Qt包括OSX下的dir结构
EN

Stack Overflow用户
提问于 2016-05-28 10:08:13
回答 1查看 519关注 0票数 2

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

代码语言:javascript
复制
#include <QWidget>
int main(int, char**) {
  QWidget* a;
}

我用

代码语言:javascript
复制
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

并得到错误

代码语言:javascript
复制
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头包含了#include <QtGui/...>。例如,在Linux安装中,这是可以的,因为文件夹是按照这个顺序设置的。但是在OSX中,文件夹有一个独特的结构。每个模块的头都在Qt<Module>.framework/Headers/...内部,而不是Qt<Module>/中。

如果Qt中的.h显然不适合这个文件夹结构,那么我如何告诉编译器包含在哪里,使用这个文件夹结构?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-31 08:20:03

正如- manatttta所指出的,Qmake‘macx’不公开头文件夹(如<QtCore/*.h><QtCore.framework/*.h>配置),因为它使用Xcode框架架构:例如<QtCore.framework/*.h>

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

代码语言:javascript
复制
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`
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37497694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档