因为我写了一系列Qt的博文以及一本书《Qt on Android核心编程》,最近有好几个使用Qt的朋友问起 Qt for iOS 的事情,因为我在这方面的经验特别少,写不出系统的文章来,非常抱歉,不能给出令人满意的答复,推荐大家去看 Jason’s Home ,在我博客左侧边栏的友情链接里也有,他提供了 Qt for iOS 的一些非常有意义的文章,而且是基于实践的,他的 App 已经在 App Store 中上线。
至于我呢,在这篇文章里,简单介绍一些如何混合 Qt 与 OC 编程。
我要说的内容呢,大部分在 Qt 帮助里都有,请大家到索引模式下,键入”Qt for iOS”,找到 Qt for iOS 这篇文章来看。它介绍了搭建开发环境、编译应用、混合OC编程这三个方面,已经非常详细了。
如果你不想啃英文,那可以接着我的文章往下看。
项目设置
既然要聊 Qt 混合 OC 编程,首先要简单介绍一下 Objective C 。我只有一句话:Go,问搜索引擎去。因为我所知实在有限,怕误导了您。当然如果您不怕,往下看吧。
OC源文件介绍
首先我要说一下 Objective C 的源文件,后缀是.m 或 .mm ,在 .mm 文件里,可以直接使用 C++ 代码。所以,我们要混合 Qt 代码与 OC 代码,就需要在 Qt 项目里加入 mm 文件。
pro 文件配置
Qt SDK for Mac ,安装之后, Qt Creator 会使用 XCode 提供的编译工具链来编译代码,能够正确编译 mm 文件,也可以链接 iOS 的库文件。
而要混合 OC 代码,需要更改一下 pro 文件。一个是添加 mm 文件,一个是连接针对 iOS 的库文件。
添加源文件,使用 OBJECTIVE_SOURCES 这个变量,比如酱紫:
OBJECTIVE_SOURCES += ocview.mm
链接库 XCode 提供的库,则需要使用 QMAKE_LFLAGS ,类似酱紫:
ios {
QMAKE_LFLAGS += -framework OpenGLES
QMAKE_LFLAGS += -framework GLKit
QMAKE_LFLAGS += -framework QuartzCore
QMAKE_LFLAGS += -framework CoreVideo