首页 > 其他分享 >Qt(5.15) CMakeLists.txt简单介绍

Qt(5.15) CMakeLists.txt简单介绍

时间:2022-12-05 22:57:07浏览次数:46  
标签:CMakeLists set CMAKE Qt PROJECT VERSION 5.15 NAME

CMakeLists.txt

cmake_minimum_required(VERSION 3.5)

指定cmake最低版本

project(projectname VERSION 0.0.1 LANGUAGES CXX)

message("project_version: ${CMAKE_PROJECT_VERSION}")
message("project_version_major: ${PROJECT_VERSION_MAJOR}")
message("project_version_minor: ${PROJECT_VERSION_MINOR}")
message("project_version_path: ${PROJECT_VERSION_PATCH}")

project()里面指定了工程名,程序版本号和程序使用的语言

if(CMAKE_VERSION VERSION_LESS "3.7.0")
    set(CMAKE_INCLUDE_CURRENT_DIR ON)
endif()
set(CMAKE_AUTOUIC ON)

使用Qt的uic.exe 把.ui文件转化为 ui_文件名.h文件

set(CMAKE_AUTOMOC ON)

使用Qt的moc.exe 把qt扩展的c++语法编译成标准c++代码(如: Q_OBJECT)

set(CMAKE_AUTORCC ON)

使用Qt的rcc.exe 把.qrc文件转为 qrc_文件名.cpp文件

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

指定C++版本,Qt6的至少需要 C++ 17版本

find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)

(兼容Qt5和6的CMake编译),给${QT_VERSION_MAJOR}赋值
如果明确Qt使用版本可以简单的编写 find_package(Qt5 REQUIRED COMPONENTS Widgets)

set(PROJECT_SOURCES
        main.cpp
        MainWindow.cpp
        MainWindow.h
        MainWindow.ui
)

将需要进行编译的文件名字赋值给${PROJECT_SOURCES}

if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
    qt_add_executable(${PROJECT_NAME}
        MANUAL_FINALIZATION
        ${PROJECT_SOURCES}
    )
else()
    add_executable(${PROJECT_NAME} ${PROJECT_SOURCES})
endif()
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)

引用Qt5Widgets.lib, 如果需要引用其他lib,如Websocket,
find_package(Qt5 REQUIRED COMPONENTS Widgets Websockets)

target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE Qt5::Widgets Qt5::Websockets)

第一个字母大写,兼容(Qt5,6写法) Qt${QT_VERSION_MAJOR}::Websockets

set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES
    WIN32_EXECUTABLE TRUE
)
install(TARGETS ${PROJECT_NAME}
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})

设置库的安装路径,具体请看CMake文档

安装命令: cmake --install <dir>

if(QT_VERSION_MAJOR EQUAL 6)
    qt_finalize_executable(untitled29)
endif()

注意

${PROJECT_NAME}${CMAKE_PROJECT_NAME}都是表示工程名称,会有点区别

标签:CMakeLists,set,CMAKE,Qt,PROJECT,VERSION,5.15,NAME
From: https://www.cnblogs.com/blackTree/p/16953802.html

相关文章

  • WIN7 安装QT Creator
     1、到官网下载QT在线安装器,https://download.qt.io/official_releases/online_installers/2、注册或登陆之后,选择要安装的组件,Win7能选择的最新版本只能是5.15版本参......
  • QT添加下拉框
    1.在ui界面上有一个名为comboBox_content的下拉框,向其添加四个下拉内容,QModbusDataUnit是QModbusTcpClient的成员//四种通信内容:线圈(Coil)、离散量输入(DiscreteInputs)、输入......
  • Qt+vs读取文件(文件对话框问题)
    QtCreator文件定位正确,VS2010+QT定位失败://选择数据库名称voiddbSettingDlg::on_selectBtn_clicked(){QStringdataBaseName=QFileDialog::getOpenFileName(thi......
  • 谈谈 Qt 程序安装包的大小,以及简要打包指南
    经常看到网上有些论调说Qt程序无比庞大,甚至拿.NET程序来比,说Qt程序打包以后跟.NET安装包差不多大。由此影响了很多人对Qt的选择。我觉得有必要对此做一些澄清—......
  • pyqt5--1、注册页面设计
    环境配置pipinstallpyqt5pipinstallpyqt5-tools(/官网)pyqt5-tools下载地址:Linksforpyqt5-tools(pypi.org)---pyqt-tools的安装包(.whl)下载网址镜像源:阿......
  • QT实现Modbus
    #include"mainwindow.h"#include"ui_mainwindow.h"#include"settingsdialog.h"#include"writeregistermodel.h"#include<QModbusTcpClient>//ModbusTCP下的客户端类#i......
  • P4115 Qtree4
    \(\mathcalLink\)由于边权为负,因此使用DP求答案。需维护每个点的最大和次大位置,单次修改\(\mathcalO(n)\)。复杂度过劣。考虑到所求为路径,考虑链分治。设\(D(i)\)......
  • Qt音视频开发04-保存音频文件(pcm/wav/aac)
    一、前言音频的保存相对来说比视频的要简单,具有通用性,不需要经过ffmpeg的编码,ffmpeg解码出来后一般会转换成pcm原始的数据用来播放,所以对数据直接写文件即可,但是这种格式......
  • windows系统删除qt后,右键打开方式有很多无效的qt链接
    网上删除注册表的方式全部无效,直接在MicrosoftStore搜ccleaner,选择registry清理一下就好了。fuck所有copy-cv战士......
  • QT源码拾贝6-11(qwindowswindow)
    目录​​6 窗口激活相关的函数QWindowsForeignWindow::setParent​​​​7 QDebug运算符<<重载​​​​8 vscode的windows的变量提示很有意思​​​​9 windows常用......