转载

使用CMake构建Qt5工程指南

下辈子,我要成为太阳。

由于项目需求,需要使用一个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_UIQT5_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工程的示例。

原文  http://freehacker.cn/utility/cmake-create-qt5-project/
正文到此结束
Loading...