CMake 预置
CMakePresets.json
有用于整个项目联编的选项,而 则有用于本地联编的选项。CMakeUserPresets.json
按照cmake-presets(7)中描述的格式创建预设文件,并将它们保存在项目的根目录中。然后,你就可以在项目视图中看到它们。
Qt Creator CMake-Presets(7) 支持版本 5 以下的配置和构建预设(在 CMake 3.24 中引入),但不执行版本检查。它会读取并使用版本 5 的所有字段(如果存在)。它不支持测试预置。
当没有CMakeLists.txt.user
文件或禁用了项目中的所有工具包时,可以在首次打开项目时导入预设。
您可以在Initial Configuration 字段及其下方的环境配置字段中查看预设。
要更新对CMakePresets.json
文件的更改,请选择Build >Reload CMake Presets ,然后选择要加载的预设文件。
配置预置
以下配置预置指示 CMake 使用平台上的默认生成器,并为所有构建类型指定构建目录。NOT_COMMON_VALUE
显示在环境配置字段中的Initial Parameters 和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 Qt XML 供应商预设。
MinGW 示例
下面的示例使用 MinGW 编译器配置 Qt 项目:
- MinGW 编译器
- 编译目录 -
<sourceDir>/build-release
- 编译类型 -
CMAKE_BUILD_TYPE
asRelease
- 生成器 - MinGW Makefiles
- CMake 可执行文件的路径
- 通过
CMAKE_PREFIX_PATH
- GNU gdb 11.2.0 用于 MinGW 11.2.0 64 位调试器
{ "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
部分首选项的可能值,请参阅CMake Qt XML Vendor Presets。
忍者生成器示例
以下配置和联编预设将 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_CONFIGURATION_TYPES": "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 ">"Tools"中设置。
MSVC 示例
在 MSVC 编译器中使用 NMAKE Makefile、Ninja 或 Ninja Multi-Config 生成器时,可以对architecture
和toolset
字段使用external
策略。这样,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
模拟器运行:
- 生成器 - 忍者
- 编译目录
<sourceDir>/build-release
- LLVM/MinGW 工具链
- 配置类型 -
CMAKE_BUILD_TYPE
asRelease
- 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 Build Configuration、CMake、CMake Qt Vendor Presets 和SDK Tool。
Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.