附录2 CMake 模板.md 2.4 KB

cmake_minimum_required(VERSION 3.5)

#自动设置项目名称
project(${PROJECT_NAME} VERSION 0.1 LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

#打开相应的UIC MOC RCC
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

#设置c++标准
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
#设置CMake前缀路径
set(CMAKE_PREFIX_PATH "D:/Packages/Qt/6.5.0/mingw111_64/lib/cmake")

# QtCreator supports the following variables for Android, which are identical to qmake Android variables.
# Check https://doc.qt.io/qt/deployment-android.html for more information.
# They need to be set before the find_package( ...) calls below.

#[[#if]]#(ANDROID)
#    set(ANDROID_PACKAGE_SOURCE_DIR "#[[${CMAKE_CURRENT_SOURCE_DIR}]]#/android")
#    if (ANDROID_ABI STREQUAL "armeabi-v7a")
#        set(ANDROID_EXTRA_LIBS
#            #[[${CMAKE_CURRENT_SOURCE_DIR}]]#/path/to/libcrypto.so
#            #[[${CMAKE_CURRENT_SOURCE_DIR}]]#/path/to/libssl.so)
#    endif()
#[[#endif]]#()

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

set(PROJECT_SOURCES
        main.cpp
)

if(#[[${QT_VERSION_MAJOR}]]# GREATER_EQUAL 6)
    qt_add_executable(#[[${PROJECT_NAME}]]#
        MANUAL_FINALIZATION
        #[[${PROJECT_SOURCES}]]#
    )
else()
    if(ANDROID)
        add_library(#[[${PROJECT_NAME}]]# SHARED
            #[[${PROJECT_SOURCES}]]#
        )
    else()
        add_executable(#[[${PROJECT_NAME}]]#
            #[[${PROJECT_SOURCES}]]#
        )
    endif()
endif()

target_link_libraries(#[[${PROJECT_NAME}]]# PRIVATE Qt#[[${QT_VERSION_MAJOR}]]#::Widgets)

set_target_properties(#[[${PROJECT_NAME}]]# PROPERTIES
    MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
    MACOSX_BUNDLE_BUNDLE_VERSION #[[${PROJECT_VERSION}]]#
    MACOSX_BUNDLE_SHORT_VERSION_STRING #[[${PROJECT_VERSION_MAJOR}]]#.#[[${PROJECT_VERSION_MINOR}]]#
)

if(QT_VERSION_MAJOR EQUAL 6)
    qt_finalize_executable(#[[${PROJECT_NAME}]]#)
endif()
# 区别debug和release来决定是否去除命令行
if(#[[${CMAKE_CXX_COMPILER}]]# MATCHES ".*/(g\\+\\+)(\\..*)")
    set_target_properties(#[[${PROJECT_NAME}]]# PROPERTIES LINK_FLAGS_RELEASE "-mwindows")
elseif(#[[${CMAKE_CXX_COMPILER}]]# MATCHES ".*/(cl)(\\..*)")
    set_target_properties(#[[${PROJECT_NAME}]]# PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup")
endif()