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库版本是不是混淆了。
作者:24K纯开源
Email: zhangzhongke007@163.com
出处:http://www.cnblogs.com/csuftzzk/
本文版权归24K纯开源和博客园共同拥有,欢迎转载,但未经作者同意必须保留此声明,且在文章明显位置给出原文链接,否则保留追究法律责任的权利。