增加cmake 注释
This commit is contained in:
		@@ -1,17 +1,39 @@
 | 
			
		||||
# cmake最低要求版本 3.5
 | 
			
		||||
cmake_minimum_required(VERSION 3.5)
 | 
			
		||||
 | 
			
		||||
project(StudyQt VERSION 0.1 LANGUAGES CXX)
 | 
			
		||||
# 项目名称: StudyQt 版本 1.0.0 使用的编程语言 cxx
 | 
			
		||||
project(StudyQt VERSION 1.0.0 LANGUAGES CXX)
 | 
			
		||||
# 将${PROJECT_VERSION}字符串按点号进行分割
 | 
			
		||||
string(REPLACE "." ";" VERSION_LIST "${PROJECT_VERSION}")
 | 
			
		||||
# 获取最后一位数字作为补丁版本号,-1是要获取的元素的索引,这里表示要获取列表中的最后一个元素
 | 
			
		||||
list(GET VERSION_LIST -1 PROJECT_VERSION_PATCH)
 | 
			
		||||
 | 
			
		||||
# 启用CMake的自动UI文件处理功能。当该选项打开时,CMake会自动查找项目中的.ui文件,
 | 
			
		||||
# 并生成相应的UI头文件,用于在代码中使用。这样,您无需手动编写UI文件的构建规则,CMake会自动处理。
 | 
			
		||||
set(CMAKE_AUTOUIC ON)
 | 
			
		||||
# 启用CMake的自动MOC文件处理功能。当该选项打开时,CMake会自动查找项目中的需要MOC处理的源文件(通常是包含了QObject的类的头文件),
 | 
			
		||||
# 并自动生成相应的MOC源文件,用于处理信号和槽的连接。这样,您无需手动编写MOC文件的构建规则,CMake会自动处理。
 | 
			
		||||
set(CMAKE_AUTOMOC ON)
 | 
			
		||||
# 启用CMake的自动资源文件处理功能。当该选项打开时,CMake会自动查找项目中的.qrc文件,并生成相应的资源文件代码,
 | 
			
		||||
# 用于在代码中使用。这样,您无需手动编写资源文件的构建规则,CMake会自动处理。
 | 
			
		||||
set(CMAKE_AUTORCC ON)
 | 
			
		||||
 | 
			
		||||
# 设置使用的C++标准为 C++17
 | 
			
		||||
set(CMAKE_CXX_STANDARD 17)
 | 
			
		||||
# 该命令设置CMake要求使用所指定的C++标准。当这个选项打开时,CMake将确保编译器使用指定的C++标准编译项目。
 | 
			
		||||
# 如果编译器不支持所需的C++标准,CMake将报错并停止构建。
 | 
			
		||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
 | 
			
		||||
 | 
			
		||||
# 在系统中查找Qt库,首先尝试查找Qt6版本,如果找不到,则尝试查找Qt5版本。
 | 
			
		||||
# REQUIRED关键字表示必须找到并引入Qt库,否则CMake会报错。COMPONENTS Widgets表示需要引入Qt的Widgets组件。
 | 
			
		||||
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
 | 
			
		||||
# 使用了CMake的变量${QT_VERSION_MAJOR}来动态指定需要查找的Qt版本。
 | 
			
		||||
# ${QT_VERSION_MAJOR}会根据前面find_package(QT NAMES Qt6 Qt5 ...)命令中找到的Qt版本进行替换。
 | 
			
		||||
# 这样可以根据实际情况引入对应版本的Qt库。
 | 
			
		||||
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
 | 
			
		||||
 | 
			
		||||
# 定义了一个名为PROJECT_SOURCES的变量,其中包含了项目的源代码文件列表。
 | 
			
		||||
# 可以方便地在CMakeLists.txt文件中使用这个变量来指定项目的源代码文件列表
 | 
			
		||||
set(PROJECT_SOURCES
 | 
			
		||||
        main.cpp
 | 
			
		||||
        mainwindow.cpp
 | 
			
		||||
@@ -19,7 +41,10 @@ set(PROJECT_SOURCES
 | 
			
		||||
        mainwindow.ui
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# 如果是Qt6或更高版本,就会执行qt_add_executable命令
 | 
			
		||||
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
 | 
			
		||||
    # qt_add_executable命令用于创建一个Qt应用程序,并将指定的源代码文件${PROJECT_SOURCES}包含在构建中。
 | 
			
		||||
    # 另外,MANUAL_FINALIZATION选项告诉CMake不要自动为目标文件添加CMake的默认链接规则,而是手动控制目标文件的链接。
 | 
			
		||||
    qt_add_executable(StudyQt
 | 
			
		||||
        MANUAL_FINALIZATION
 | 
			
		||||
        ${PROJECT_SOURCES}
 | 
			
		||||
@@ -30,28 +55,33 @@ if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
 | 
			
		||||
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
 | 
			
		||||
else()
 | 
			
		||||
    if(ANDROID)
 | 
			
		||||
        # 如果是Android平台,将使用add_library命令创建一个共享库(shared library)目标。
 | 
			
		||||
        add_library(StudyQt SHARED
 | 
			
		||||
            ${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命令创建一个可执行文件目标。
 | 
			
		||||
        add_executable(StudyQt
 | 
			
		||||
            ${PROJECT_SOURCES}
 | 
			
		||||
        )
 | 
			
		||||
    endif()
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
# 将Qt Widgets库与目标StudyQt进行链接,以确保应用程序能够使用Qt Widgets功能。
 | 
			
		||||
target_link_libraries(StudyQt PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
 | 
			
		||||
 | 
			
		||||
# 设置目标StudyQt的属性。这些属性包括MacOSX Bundle的标识符、版本号和短版本号,以及指定目标为MacOSX Bundle和Win32可执行文件。
 | 
			
		||||
set_target_properties(StudyQt PROPERTIES
 | 
			
		||||
    MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
 | 
			
		||||
    MACOSX_BUNDLE_GUI_IDENTIFIER studyqt.devwki.net
 | 
			
		||||
    MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
 | 
			
		||||
    MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
 | 
			
		||||
    MACOSX_BUNDLE TRUE
 | 
			
		||||
    WIN32_EXECUTABLE TRUE
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# 将StudyQt目标安装到相应的目录下,如BUNDLE目标安装到当前目录,
 | 
			
		||||
# LIBRARY目标安装到${CMAKE_INSTALL_LIBDIR}目录,RUNTIME目标安装到${CMAKE_INSTALL_BINDIR}目录。
 | 
			
		||||
install(TARGETS StudyQt
 | 
			
		||||
    BUNDLE DESTINATION .
 | 
			
		||||
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user