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的商标。所有其他商标均为各自所有者的财产。