使用CMake构建Qt5工程指南

2016-12-19 10:47:59来源:作者:木子兮人点击

第七城市

下辈子,我要成为太阳。

由于项目需求,需要使用一个GUI界面来操作音视频,选择使用Qt来实现这个简单的界面。由于项目需要跨平台,采用CMake来构建工程,所以Qt工程的构建也需要采用CMake。

Qt文件的处理程序

Qt会对某些文件进行特殊处理,我们使用CMake来生成Qt工程,必须要显式的处理这些文件。

带有 Q_OBJECT宏的头文件,需要被 moc程序处理 .ui界面设计文件,需要被 uic程序处理 .qrc资源文件,需要被 rcc程序处理

接下来,我们会看到,在CMake文件中,如何对上述三种文件进行针对性处理。

生成ui头文件

GUI界面使用Qt Designer进行简单的设计,将设计的test.ui文件保存到工程目录中的 //form下。

如果我们这儿不使用CMake,而直接使用Visual Studio,我们可以将ui文件添加到Visual Studio工程中,然后直接右键test.ui文件编译。Visual Studio会调用Qt的uic工具编译test.ui文件,进而生成ui_test.h头文件。

Uic'ing ../../../form/test.ui...Generate ui_test.h

考虑到跨平台,我们需要使用CMake来完成上述操作。CMake提供了 QT5_WRAP_UI命令,该命令用来生成ui文件对应的头文件。

FILE(GLOB FORMS "form/*.ui")QT5_WRAP_UI(FORMS_UIC ${FORMS})

QT5_WRAP_UI等价于下面命令:

uic –o ui_test.h test.ui 生成moc、qrc头文件

和生成ui头文件类似,CMake提供了 QT5_WRAP_UI和 QT5_ADD_RESOURCES两个命令来生成对应的头文件。

FILE(GLOB MOCS "inc/test.h")QT5_WRAP_CPP(HEADERS_MOC ${MOCS}) FILE(GLOB RES "qrc/*.qrc")QT5_ADD_RESOURCES(RES_RCC ${RES}) 将生成的文件添加到项目中

这些生成的文件都被保存在 CMAKE_CURRENT_BINARY_DIR文件中,为了使用这些文件,需要:

INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})

然后将这些文件添加到项目中:

ADD_EXECUTABLE(gui ${FILES} ${HEADERS_MOC} ${FORMS_UIC} ${RES_RCC}) 使用更多的Qt模块

如果想要在项目中使用其他的Qt模块,也必须要在CMake中显式的指明。

SET(QT_USE_QTOPENGL TRUE)

常用的模块包括下列:

QT_USE_QTNETWORK QT_USE_QTOPENGL QT_USE_QTSQL QT_USE_QTXML QT_USE_QTSVG QT_USE_QTTEST QT_USE_QTDBUS QT_USE_QTSCRIPT QT_USE_QTWEBKIT QT_USE_QTXMLPATTERNS QT_USE_PHONON 项目链接

github项目 pro-cmake给出了使用cmake来构建项目的通用模板。其中gui文件夹中,给出了使用cmake来生成Qt5工程的示例。

第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台