专栏首页24K纯开源CMake结合Visual Studio中开发Qt应用程序注意事项

CMake结合Visual Studio中开发Qt应用程序注意事项

Qt工程管理

个人比较偏爱于使用CMake来管理C++工程,因为只要编写一个CMakeLists.txt文件,就可以在Windows和Mac上生成各自的IDE工程。在Windows上, CMake自然是生成Visual Studio工程文件了(新版Visual Studio貌似能直接倒入CMake工程了);Mac上生成XCode工程即可。开发Qt应用程序的时候,虽然有Qt Creator可以使用,甚至Qt Creator还可以直接导入CMake工程,但是其调试和错误提示功能实在太过寒碜,导致调试过程中各种郁闷。因此,本人在实际开发中一般使用CMake来管理Qt工程,然后在Visual Studio里面进行开发编译。一般一个Qt应用程序的CMakeLists文件结构如下:

CMAKE_MINIMUM_REQUIRED(VERSION 3.8)
PROJECT(Test C CXX)

#############################################################################
# Compiler and linker options
ADD_DEFINITIONS(-Wall -DWIN32_LEAN_AND_MEAN) 

SET(CMAKE_AUTOMOC ON)
SET(CMAKE_AUTORCC ON) 
SET(CMAKE_CXX_STANDARD 11) 

FILE(GLOB SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp")
FILE(GLOB HEADER_FILES "${CMAKE_CURRENT_SOURCE_DIR}/*.h") 
FILE(GLOB FORMS "${CMAKE_CURRENT_SOURCE_DIR}/*.ui") 
 
SET(RESOURCES ${CMAKE_CURRENT_SOURCE_DIR}/resources.qrc)  
  
  
#################################################################################
# EXTERNAL LIBS
FIND_PACKAGE(Qt5 COMPONENTS Core Widgets Gui REQUIRED) 
qt5_wrap_ui(UI_HEADERS ${FORMS})

INCLUDE_DIRECTORIES(
${CMAKE_CURRENT_BINARY_DIR}/)

################################################################################
# Compile target
ADD_EXECUTABLE ( ${PROJECT_NAME} 
				${SOURCE_FILES}
				${HEADER_FILES}
				${UI_HEADERS}  
				${RESOURCES}) 
# https://www.kdab.com/using-cmake-with-qt-5/
qt5_use_modules(${PROJECT_NAME} Core Widgets Gui)  

其中,有一点要注意的是“INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/)。这一行是为了包含UI生成的头文件,否则在编译的时候无法找到UI头文件会报错。

备注

使用CMake生成Qt工程,编译运行的时候需要注意一些事情。如果机器上装了多个版本的Qt库的话,使用CMake生成Qt工程的时候,最容易出错了。CMake在生成工程的时候,会去搜索用户和系统的Path路径,查找系统上安装的Qt库。如果工程编译后,再去修改PATH中的Qt版本路径,会出现一些诡异的现象。像我碰到的一些情况包括:(1)程序启动不起来或者报错“xxx找不到符号入口点”;(2)资源加载不到,典型的特征是使用QRC路径(如“:/style/default.qss”)来加载资源会失败;(3)程序无故崩溃或执行结果不正常。但凡出现了这样一些情况,而恰好工程又是采用CMake管理的,那么就要考虑下Qt库版本是不是混淆了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • make makefile cmake qmake都是什么,有什么区别?

    作者:玟清 链接:https://www.zhihu.com/question/27455963/answer/36722992 来源:知乎 著作权归作者...

    bear_fish
  • OpenBR安装与编译过程 原

    首先要安装VS2013,官网上说装Express版本就行,我这边装了Professional中文版,除了编译的时候经常出现字符问题,其他没什么影响。

    Gaussic
  • 基于OBS的插件开发总结

    一、介绍 OBS(Open Broadcaster Software)是一个广泛使用的视频录制直播软件。利用该软件可以实现桌面窗口、游戏、网页、RTMP流、图...

    24K纯开源
  • Qt环境配置相关问题

    1.Qmake -project生成Qt Pro文件

    sofu456
  • Win 7 64位VS2010 PCL 1.6.0和1.8.0配置步骤

    刚接触PCL两个月,在群主和群友的帮助下完成了PCL1.6.0 和1.8.0的配置,这里记录了我配置过程中的问题,可能很小白,不足之处希望各位见谅指正。

    点云PCL博主
  • Cplus_libs_wrapper-一些关于C++的常用功能的接口实现

    自己总结的一个有关C++的一些第三方库,包括示例和链接,目前已经托管到Github上面:Cplus_libs_wrapper

    ccf19881030
  • 【转】从零开始手敲次世代游戏引擎(二)

    上一篇我们写了一个最基本的Hello Engine,并用Visual Studio的命令行工具,cl.exe进行了编译。

    代码咖啡
  • Qt配置使用VS2010进行开发

    它包括跨平台类库、集成开发工具和跨平台 IDE。使用 Qt 您只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。

    阳光岛主
  • 利用 cmake 工具生成 Visual Studio 工程文件

    对于习惯了 Visual Studio 强大的管理项目、编码和调试功能的读者来说,在 Linux 下使用 gcc/g++ 编译、使用 gdb 调试是一件何其痛苦...

    范蠡

扫码关注云+社区

领取腾讯云代金券