# ----------------------------------
# Project Settings ProjectName要防止vs工程名字冲突
# ----------------------------------
cmake_minimum_required(VERSION 3.14)
# 启用现代 CMake 策略AUTOMOC、AUTOUIC、AUTORCC的自动处理(CMake ≥3.10)
cmake_policy(SET CMP0071 NEW)
qt_standard_project_setup(REQUIRES 6.8)
project(MyProject VERSION 1.5.4.1 LANGUAGES CXX)
# ----------------------------------
# 项目名称、版本号会同步到内置属性,你可以特定属性获取他们,如:
# ----------------------------------
set(PROJECT_VERSION ${PROJECT_VERSION})
set(PROJECT_NAME ${PROJECT_NAME})
# ----------------------------------
# C++ Settings
#CMAKE_CXX_STANDARD_REQUIRED ` 中设置的 C++ 版本。如果设置为 `ON`,那么CMake会要求编译器必须支持`CMAKE_CXX_STANDARD`中设置的 C++ 版本,否则会配置失败。
如果设置为 `OFF` 或者未设置,那么如果编译器不支持 `CMAKE_CXX_STANDARD` 中设置的 C++ 版本,CMake 会回退到编译器支持的最新版本。
# ----------------------------------
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES
# 避免控制台窗口干扰用户体验
WIN32_EXECUTABLE ON
# 在 macOS 平台生成 .app 格式的应用程序包,包含标准目录结构(如 Contents/Resources 和 Contents/MacOS),符合 macOS 应用分发规范1。
# 附加效果:自动生成默认的 Info.plist 文件,可通过 MACOSX_BUNDLE_INFO_PLIST 属性自定义该文件路径1。
MACOSX_BUNDLE ON
)
set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64")
# 强制检查 Qt 依赖
find_package(Qt6 6.5 COMPONENTS Core Gui Qml Quick QuickControls2 REQUIRED)
# 默认启用 CMAKE_AUTOMOC、CMAKE_AUTOUIC 和 CMAKE_AUTORCC,命令本身从Qt 6.3启用
qt_standard_project_setup(REQUIRES 6.5)
# ----------------------------------
# Build Options 可以更改的属性,你将在项目设置中看到他们
# ----------------------------------
option(PROJECT_INSTALL "Install Project" OFF)
option(RELEASE_DEBUGINFO "Use debug info in release mode" ON)
# ----------------------------------
# CMake Settings
# ----------------------------------
if(MSVC)
{
# 设置编译器flags
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /utf-8")
# 链接器标志的变量
# 在创建可执行文件时由链接器使用的标志
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /manifest:no")
# 在创建模块库时由链接器使用的标志
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /manifest:no")
# 在创建共享库(.so、.dll)时由链接器使用的标志
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /manifest:no")
# 在创建静态库(.a、.lib)时由链接器使用的标志
set(CMAKE_STATIC_LINKER_FLAGS"${CMAKE_SHARED_LINKER_FLAGS} /manifest:no")
# 了解如何使用这些标志可以帮助您更好地控制可执行文件的链接行为。
}
更新中......
cmake_lookup
于 2024-11-28 09:49:09 首次发布