qt生成的标准cmakelist文件解析

qt生成的exe文件解析

# 设置cmake最低版本,但是搞不懂为什么要设置
# 解释:后面的cmake命令可能用到一些新的特性,所以需要设置最低版本,如GREATER_EQUAL表达式
cmake_minimum_required(VERSION 3.5)

# 设置项目名称和版本、语言
project(ezSortPro VERSION 0.1 LANGUAGES CXX)

# qt的ui、信号槽、资源文件的编译设置
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

# 设置C++标准
set(CMAKE_CXX_STANDARD 17)

# 设置强制使用CMAKE_CXX_STANDARD变量的C++标准
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 引入qt核心库,根据环境变量选择版本
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)

# 添加要编译的文件:(源文件、头文件、ui文件、资源文件)
set(PROJECT_SOURCES
        main.cpp
        mainwindow.cpp
        mainwindow.h
        mainwindow.ui
)

# 添加到可执行文件
# if( qt版本 >= 6 )则使用qt_add_executable
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
    qt_add_executable(ezSortPro
        MANUAL_FINALIZATION
        ${PROJECT_SOURCES}
    )
else()
    # if( Android )则执行add_library
    if(ANDROID)
        add_library(ezSortPro SHARED
            ${PROJECT_SOURCES}
        )
    # 否则执行add_executable
    else()
        add_executable(ezSortPro
            ${PROJECT_SOURCES}
        )
    endif()
endif()

# 添加qt的链接库
target_link_libraries(ezSortPro PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)

# Qt for iOS 自 Qt 6.1 起自动设置 MACOSX_BUNDLE_GUI_IDENTIFIER。
# 如果您正在为 iOS 或 macOS 开发,则应考虑手动设置一个明确、固定的 bundle 标识符。
if(${QT_VERSION} VERSION_LESS 6.1.0)
  set(BUNDLE_ID_OPTION MACOSX_BUNDLE_GUI_IDENTIFIER com.example.ezSortPro)
endif()

# 设置ezSortPro目标属性
set_target_properties(ezSortPro PROPERTIES
    ${BUNDLE_ID_OPTION}
    MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}     # 设置macOS应用程序包的版本号
    MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}    # 设置macOS应用程序包的短版本号
    MACOSX_BUNDLE TRUE      # 指示CMake在生成macOS的构建系统时将此目标标记为macOS应用程序包
    WIN32_EXECUTABLE TRUE   # 指示CMake在生成Windows的构建系统时将此目标标记为Windows应用程序包
)

# 设置安装目录为GNU标准目录结构
include(GNUInstallDirs)

# 安装目标文件
install(TARGETS ezSortPro
    BUNDLE DESTINATION .                        # 指定如果目标是一个macOS应用程序包,它将被安装到当前目录下
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} # 指定如果目标是一个库文件,它将被安装到${CMAKE_INSTALL_LIBDIR}所指定的目录中
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} # 指定如果目标是一个可执行文件,它将被安装到${CMAKE_INSTALL_BINDIR}所指定的目录中
)

# qt版本为6时,执行qt_finalize_executable
if(QT_VERSION_MAJOR EQUAL 6)
    qt_finalize_executable(ezSortPro)
endif()

qt生成的库文件命令解析

# 设置cmake的最小版本
cmake_minimum_required(VERSION 3.14)

# 设置项目名称、编程语言
project(untitled LANGUAGES CXX)

# qt的ui、信号槽、资源文件的编译设置
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

# 设置C++标准
set(CMAKE_CXX_STANDARD 17)
# 设置强制使用CMAKE_CXX_STANDARD变量的C++标准
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 引入qt核心库,根据环境变量选择版本
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core)

# 添加要编译的文件
add_library(untitled SHARED
  untitled_global.h
  untitled.cpp
  untitled.h
)

# 添加qt的链接库
target_link_libraries(untitled PRIVATE Qt${QT_VERSION_MAJOR}::Core)

# 指定编译给定<target>时要使用的编译定义,https://runebook.dev/zh/docs/cmake/command/target_compile_definitions
target_compile_definitions(untitled PRIVATE UNTITLED_LIBRARY)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值