首页 > 其他分享 >qt6CMake构建文件解释

qt6CMake构建文件解释

时间:2023-03-10 19:33:06浏览次数:42  
标签:文件 set CMAKE qt VERSION 构建 qt6CMake 01friststudy Qt

cmake_minimum_required(VERSION 3.5)#用于构建CMake项目CMake最低版本

project(01friststudy VERSION 0.1 LANGUAGES CXX)#通过project命令配置项目信息,就是版本简述

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 17)#Qt 6 需要支持 C++ 版本 17 或更高版本的编译器。RED
set(CMAKE_CXX_STANDARD_REQUIRED ON)#通过设置,变量来强制实施此操作,如果编译器太旧,CMake 将打印错误。CMAKE_CXX_STANDARDCMAKE_CXX_STANDARD_REQUI

find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets LinguistTools)#CMake查找Qt 6,并导入模块
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets LinguistTools)#CMake查找包,并导入模块

set(TS_FILES 01friststudy_zh_CN.ts)#设置翻译文件

set(PROJECT_SOURCES#项目来源
        main.cpp
        mywidget.cpp
        mywidget.h
        ${TS_FILES}
)

if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)#qt版本主要
    qt_add_executable(01friststudy#创建并完成特定于平台类型的应用程序目标。
        MANUAL_FINALIZATION
        ${PROJECT_SOURCES}
    )
# Define target properties for Android with Qt 6 as:
#    set_property(TARGET 01friststudy APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
#                 ${CMAKE_CURRENT_SOURCE_DIR}/android)
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation

    qt_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES})
else()
    if(ANDROID)
        add_library(01friststudy SHARED#添加名为01friststudy的动态库,库的源文件可指定
            ${PROJECT_SOURCES}
        )
# Define properties for Android with Qt 5 after find_package() calls as:
#    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
    else()
        add_executable(01friststudy#告诉CMake 我们要构建一个作为目标的可执行文件(所以不是库)。目标应从C++源文件 构建。01friststudy.cpp
            ${PROJECT_SOURCES}
        )
    endif()

    qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES})#处理给定的源(目录或单个文件)以生成Qt Linguist文件。这些文件依次被编译为存储在构建目录中的具有相同基本名称的文件。生成的文件的路径被添加到..ts.ts.qm.qm<VAR>
endif()

target_link_libraries(01friststudy PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)#告诉CMake可执行文件通过引用上述调用导入的目标来使用Qt Core

set_target_properties(01friststudy PROPERTIES#为一个目标设置属性。该命令的语法是列出所有你想要变更的文件,然后提供你想要设置的值。
    MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com#你能够使用任何你想要的属性/值对,并且在随后的代码中调用GET_TARGET_PROPERTY命令取出属性的值。
    MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
    MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
    MACOSX_BUNDLE TRUE
    WIN32_EXECUTABLE TRUE
)

install(TARGETS 01friststudy#将项目生成的库文件、头文件、可执行文件或相关文件等安装到指定位置(系统目录,或发行包目录)
    BUNDLE DESTINATION .
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})

if(QT_VERSION_MAJOR EQUAL 6)#未来的版本中可能会更改。描述在创建目标之后,通常需要进一步的处理或终结步骤。执行的步骤取决于平台和目标的各种属性。这些步骤应该在与创建目标时相同的目录作用域中执行,因此这个命令也应该从相同的目录作用域中调用。该命令根据所提供的平台和目标实现以下功能:当目标是Android时,为目标生成一个部署设置文件。如果为Android构建,则创建一个生成APK的构建目标。该命令通常作为qt_add_executable调用的一部分调用。该命令的文档中讨论了调用发生的时间以及al项目可能需要显式调用它的时间。
    qt_finalize_executable(01friststudy)
endif()

 

标签:文件,set,CMAKE,qt,VERSION,构建,qt6CMake,01friststudy,Qt
From: https://www.cnblogs.com/ouzhougou/p/17204495.html

相关文章

  • 后端存储—pv—pvc—pod yaml文件
    转载自:https://zhuanlan.zhihu.com/p/434209418======== 使用PV,PVC,NFS来做持久化存储的综合实例。(注意顺序,先搭建NFS服务器--定义PV-定义PVC-定义Pod)#vimnginx-p......
  • 02 文件修改的两种方式
    """@作者:egon老湿@微信:18611453110@专栏:https://zhuanlan.zhihu.com/c_1189883314197168128"""#withopen('a.txt',mode='r+t',encoding='utf-8')asf:#f.seek......
  • 04 文件的高级操作:控制文件指针的移动
    """@作者:egon老湿@微信:18611453110@专栏:https://zhuanlan.zhihu.com/c_1189883314197168128"""#指针移动的单位都是以bytes/字节为单位#只有一种情况特殊:#t......
  • 03 文件的操作的其他方法
    """@作者:egon老湿@微信:18611453110@专栏:https://zhuanlan.zhihu.com/c_1189883314197168128"""#一:读相关操作#1、readline:一次读一行#withopen(r'g.txt',mode='rt......
  • java-IO-字节流复制文本文件
          ......
  • 宝塔修改php配置文件不生效临时解决办法
    项目要测试上传大文件,php.ini配置一直不生效,改了一直是2M,临时解决办法是修改站点根目录下的.user.ini 文件新增对应配置例如:upload_max_filesize=200M直接在写 .......
  • JAVA WEB项目文件夹上传下载源代码
    ​ 一、功能性需求与非功能性需求要求操作便利,一次选择多个文件和文件夹进行上传;支持PC端全平台操作系统,Windows,Linux,Mac支持文件和文件夹的批量下载,断点续传。刷......
  • 文件包含漏洞(学习中)
    b站蜗牛学院课2-P121所用虚拟机地址:192.168.112.188所用本机地址:192.168.112.1一、本地文件包含1.源代码在虚拟机的security/fileinc.php文件中写入如下代码:<?php......
  • python根据当前时间创建文件夹
    若想在文件夹名称中包含小时、分钟和秒,可以将时间格式化字符串修改为"%Y-%m-%d-%H-%M-%S"。下面是示例代码:importosfromdatetimeimportdatetime#获取当前时间n......
  • Python文件打包exe程序
    文件打包概要脚本打包exe:win/mac【终端】qt5,开发桌面应用打包qt5程序【桌面应用】1.exe打包pipinstallpyinstaller注意事项:支持mac、win(Windows建议使用py......