VS2022配置qt5 cmake项目

1. 目的

用VS2022创建一个cmake项目,编辑CMakelists.txt。

2. CMakelist.txt 详细说明

1)配置项目

新建CMakelists.txt文件。添加所需要的宏定义和CXX编译器标准。

cmake_minimum_required(VERSION 3.18)
project(05testQ5Mingw_02)

set(CMAKE_CXX_STANDARD 14)

2)配置搜索路径

使用find_package来启用Qt5模块,并设置必要的变量。
※ 设置启用自动编译moc、rcc和ui。
※ 设置AUTOMOC生成路径。
※ 设置qt5安装路径。
※ 搜索库,并将搜索到的 Qt5Widgets_INCLUDE_DIRS 路径添加到项目包含路径中。

set(CMAKE_AUTOMOC ON) # 启用自动moc处理
set(CMAKE_AUTORCC ON) # 启用自动rcc处理
set(CMAKE_AUTOUIC ON) # 启用自动uic处理,如果使用.ui文件的话

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC_RELAXED_MODE ON)
set(CMAKE_AUTOMOC_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/moc)
message('MOC GENERATED: ${CMAKE_CURRENT_BINARY_DIR}/moc')
# 设置qt安装路径
set(CMAKE_PREFIX_PATH "D:/Qt/Qt5.14.2/5.14.2/msvc2017_64")
find_package(Qt5Widgets REQUIRED) 
find_package(Qt5Core REQUIRED)
find_package(Qt5Gui REQUIRED)
# 添加Qt5Widgets包含路径...
include_directories(${Qt5Widgets_INCLUDE_DIRS})

3)手动生成uic

# uic手动生成的ui_xxx.h文件将输出到 project_dir/generate 目录。
include_directories(05testQ5Mingw_02 PRIVATE ${CMAKE_SOURCE_DIR}/generate)
# 使用命令手动处理uic生成 ui_xxx.h文件。
# 需要uic处理的界面文件设置为数组
set(UI_FILES recieveQtApp_main.ui xxxx.ui)
# 定义UIC处理的文件。包括设置输出路径和文件名:
# ... ${CMAKE_SOURCE_DIR}/generate/ui_${UI_FILE_NAME}.h
set(GENERATED_UI_FILES )
foreach(UI_FILE ${UI_FILES})
  get_filename_component(UI_FILE_NAME ${UI_FILE} NAME_WE)
  set(GENERATED_UI_FILES ${GENERATED_UI_FILES} ${CMAKE_SOURCE_DIR}/generate/ui_${UI_FILE_NAME}.h)
endforeach()

# 通过qt uic命令,逐个编译ui生成头文件。并将输出文件“GENERATED_UI_FILES”添加到编译目标文件中。
#add_executable (${PROJECT_NAME} ...程序源文件... ${GENERATED_UI_FILES})
foreach(UI_FILE ${UI_FILES})
    get_filename_component(UI_FILE_NAME ${UI_FILE} NAME_WE)
    add_custom_command(
        OUTPUT ${CMAKE_SOURCE_DIR}/generate/ui_${UI_FILE_NAME}.h
        COMMAND uic ${CMAKE_SOURCE_DIR}/${UI_FILE} -o ${CMAKE_SOURCE_DIR}/generate/ui_${UI_FILE_NAME}.h
        DEPENDS ${UI_FILE}
    )
endforeach()

4)添加ui_.h包含

将生成的 ui_xxx.h添加到项目中。添加头文件, 和添加包含路径。【注意】添加:${Qt5Widgets_INCLUDE_DIRS}

include_directories(${PROJECT_NAME} PRIVATE
  src
  inc
  generate # 这是uic输出的 ui_xxxxx.h 目录
  ${Qt5Widgets_INCLUDE_DIRS}
  )

5)创建目标文件

创建目标文件(exe)。add_executable命令来创建可执行目标

add_executable(${PROJECT_NAME} ${你自定义的包含路径_head} main.cpp
        ... 其它源程序和头文件
        you_qt_app_.qrc
        ${GENERATED_UI_FILES}
        )

6)链接库

target_link_libraries(${PROJECT_NAME} 
    Qt5::Core
    Qt5::Gui
    Qt5::Widgets
        )

3. vs2022生成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值