前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CMake结合Visual Studio中开发Qt应用程序注意事项

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

作者头像
24K纯开源
发布2018-05-28 17:22:18
2.7K0
发布2018-05-28 17:22:18
举报
文章被收录于专栏:24K纯开源24K纯开源

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文件结构如下:

代码语言:javascript
复制
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库版本是不是混淆了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-05-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Qt工程管理
  • 备注
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档