CMake 预设
CMakePresets.json 包含项目级构建的选项,而 CMakeUserPresets.json 包含局部构建的选项。
按照在 cmake-presets(7) 中描述的格式创建预设文件,并将它们存储在项目的根目录中。您可以在 项目 视图中查看它们。
Qt Creator 支持版本 5 的 configure 和 build 预设(在 CMake 3.24 中引入),但不强制进行版本检查。如果存在,它会读取和使用版本 5 的所有字段。它不支持 test 预设。
您可以在第一次 打开项目 时导入预设,如果没有 CMakeLists.txt.user 文件或您已禁用项目中所有工具包的情况下。

您可以在 初始配置 字段及其下面的环境配置字段中查看预设。

要更新 CMakePresets.json 文件中的更改,请选择 构建 > 重新加载 CMake 预设,然后选择要加载的预设文件。
配置预设
以下配置预设指示 CMake 在平台上使用默认生成器,并指定所有构建类型的构建目录。在 初始参数 中显示 NOT_COMMON_VALUE,在环境配置字段中显示 AN_ENVIRONMENT_FLAG。
{
"version": 1,
"configurePresets": [
{
"name": "preset",
"displayName": "preset",
"binaryDir": "${sourceDir}/build/preset",
"cacheVariables": {
"NOT_COMMON_VALUE": "NOT_COMMON_VALUE"
},
"environment": {
"AN_ENVIRONMENT_FLAG": "1"
}
},
"vendor": {
"qt.io/QtCreator/1.0": {
"AskBeforePresetsReload": false,
"AskReConfigureInitialParams": false,
"AutorunCMake": false,
"PackageManagerAutoSetup": false,
"ShowAdvancedOptionsByDefault": true,
"ShowSourceSubFolders": false,
"UseJunctionsForSourceAndBuildDirectories": true
}
}
]
}有关 vendor 部分中 CMake 项目设置的更多信息,请参阅 为项目覆盖 CMake 设置。
MinGW 示例
以下示例配置了具有以下功能的 Qt 项目:
- MinGW 编译器
- 构建目录 –
<sourceDir>/build-release - 构建类型 –
CMAKE_BUILD_TYPE为发布 - 生成器 – MinGW Makefiles
- CMake 可执行文件的路径
- 使用
CMAKE_PREFIX_PATH的 Qt 安装路径 - MinGW 11.2.0 64 位调试器 GNU gdb 11.2.0
{
"version": 1,
"configurePresets": [
{
"name": "mingw",
"displayName": "MinGW 11.2.0",
"generator": "MinGW Makefiles",
"binaryDir": "${sourceDir}/build-release",
"cmakeExecutable": "C:/Qt/Tools/CMake_64/bin/cmake.exe",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"CMAKE_PREFIX_PATH": "C:/Qt/6.4.0/mingw_64"
},
"environment": {
"PATH": "C:/Qt/Tools/mingw1120_64/bin;$penv{PATH}"
},
"vendor": {
"qt.io/QtCreator/1.0": {
"debugger": {
"DisplayName": "GNU gdb 11.2.0 for MinGW 11.2.0 64-bit",
"Abis": ["x86-windows-msys-pe-64bit"],
"Binary": "C:/Qt/Tools/mingw1120_64/bin/gdb.exe",
"EngineType": 1,
"Version": "11.2.0"
}
}
]
}为了加快在Windows上的进程,请在《cacheVariables》部分指定 CMAKE_C_COMPILER 和 CMAKE_CXX_COMPILER。
有关某些 debugger 参数的可能值,请参阅《添加调试器》。
Ninja生成器示例
以下配置和构建预设将Ninja Multi-Config作为生成器,添加了 Debug 和 Release 构建步骤,并将 ninja.exe 的路径指定为 CMAKE_MAKE_PROGRAM 变量的值
{
"version": 2,
"configurePresets": [
{
"name": "ninja-nmc",
"displayName": "Ninja Multi-Config MinGW",
"generator": "Ninja Multi-Config",
"binaryDir": "${sourceDir}/build",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug;Release",
"CMAKE_PREFIX_PATH": "C:/Qt/6.4.0/mingw_64"
"CMAKE_MAKE_PROGRAM": "C:/Qt/Tools/Ninja/ninja.exe"
},
"environment": {
"PATH": "c:/Qt/Tools/mingw1120_64/bin;$penv{PATH}"
}
}
],
"buildPresets": [
{
"name": "release",
"displayName": "Ninja Release",
"configurePreset": "ninja-nmc",
"configuration": "Release"
},
{
"name": "debug",
"displayName": "Ninja Debug",
"configurePreset": "ninja-nmc",
"configuration": "Debug"
}
]
}此示例假定CMake可执行文件路径已在《首选项》>《CMake》>《工具》中设置
MSVC示例
当使用与NMAKE Makefiles、Ninja或Ninja Multi-Config生成器配合的MSVC编译器时,您可以为《架构》和《工具集》字段使用《外部》策略。这允许Qt Creator在调用CMake之前设置Visual C++环境。
例如
"generator": "Ninja Multi-Config", "toolset": { "value": "v142,host=x64", "strategy": "external" }, "architecture": { "value": "x64", "strategy": "external" },
如果您使用非VS生成器的MSVC编译器并在《PATH》中具有多个编译器,那么您可能还必须在《cacheVariables》或《environmentVariables》中指定要使用的编译器
"generator": "Ninja Multi-Config", "toolset": { "value": "v142,host=x64", "strategy": "external" }, "architecture": { "value": "x64", "strategy": "external" }, "cacheVariables": { "CMAKE_C_COMPILER": "cl.exe", "CMAKE_CXX_COMPILER": "cl.exe" }
交叉编译示例
以下示例配置了Qt项目,以便在macOS上交叉编译以用于Windows,并在macOS上使用《wine》模拟器运行
- 生成器 – Ninja
- 构建目录 –
<sourceDir>/build-release - LLVM/MinGW工具链
- 配置类型 – 《CMAKE_BUILD_TYPE》设置为《Release》
- LLDB 18.1.6调试器
- 《wine》模拟器
{
"version": 4,
"configurePresets": [
{
"name": "llvm-mingw",
"displayName": "LLVM-MinGW 18.1.6",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build-release",
"toolchainFile": "llvm-mingw.cmake",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"CMAKE_CROSSCOMPILING_EMULATOR": "/opt/homebrew/bin/wine"
},
"vendor": {
"qt.io/QtCreator/1.0": {
"debugger": {
"DisplayName": "LLDB 18.1.6 (CMake Preset)",
"Abis": ["x86-darwin-generic-mach_o-64bit", "arm-darwin-generic-mach_o-64bit"],
"Binary": "/Users/jdoe/llvm-mingw/bin/lldb",
"EngineType": 256,
"Version": "18.1.6"
}
}
}
}
]
}使用条件
如果它们匹配《condition》,则会使用以下配置预置。也就是说,如果《hostSystemName》等于《Linux》,则使用《linux》预置,如果等于《Windows》,则使用《windows》预置。
{
"version": 3,
"configurePresets": [
{
"name": "linux",
"displayName": "Linux GCC",
"binaryDir": "${sourceDir}/build",
"cacheVariables": {
"CMAKE_PREFIX_PATH": "$env{HOME}/Qt/6.4.0/gcc_64"
},
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Linux"
}
},
{
"name": "windows",
"displayName": "Windows MSVC",
"binaryDir": "${sourceDir}/build",
"cacheVariables": {
"CMAKE_PREFIX_PATH": "$env{SYSTEMDRIVE}/Qt/6.4.0/msvc2019_64"
},
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
}
]
}另请参阅《CMake构建配置》、《CMake》和《SDK工具》。
©2024 The Qt Company Ltd. 本文档中的贡献是该权利所有者的版权。本提供的文档是根据自由软件基金会发布的《GNU自由文档许可证第1.3版》的条款下许可的。Qt及其相关标志是芬兰和其他国家的The Qt Company Ltd的商标。所有其他商标均为各自所有者的财产。