SDK 工具
Qt Online Installer 使用 SDK 工具(sdktool )来配置 CMake 并设置Kit首选项,例如编译器、调试器、设备和 Qt 版本。例如,您可以通过命令行使用该工具,为计算机上的所有用户自动设置 Qt 和Qt Creator 的首选项。对于单个用户而言,通常更方便在Preferences >Kits 中进行更改。
要使用 SDK 工具,请在 Qt 安装目录下的Tools\sdktool\bin 目录中输入以下命令:
sdktool [OPTION] [OPERATION [OPTIONS]]
如需了解您所用 SDK 工具版本支持的选项和操作,请输入:
sdktool --help
值类型
这些操作会以<KEY> <TYPE>:<VALUE> 的形式将设置添加到其创建的配置中。支持的TYPE 值包括:
boolint- QByteArray
- QString
- QVariantList
SDK 路径
Qt Online Installer 和Qt Creator 独立安装程序均会安装sdktool 。安装程序生成的sdktool 默认位于安装程序中的Qt Creator 读取 SDK Tool 写入信息的路径。若要将sdktool 指向其他Qt Creator 安装位置,请根据您使用的是Qt Online Installer 还是脱机安装程序,相应地设置--sdkpath 。
- Qt Online Installer:
<Qt_Online_Installer>/Tools/sdktool - Qt Creator 独立安装程序:
- 在 Windows 和 Linux 上:
<qtcreator>/share/qtcreator/ - 在 macOS 上
Qt Creator.app/Contents/Resources/
- 在 Windows 和 Linux 上:
选项
下表总结了可用的选项。
| 选项 | 描述 |
|---|---|
--help | -h | 显示有关 SDK 工具选项的帮助。 输入 |
--sdkpath=<PATH> | -s <PATH> | 设置 SDK 工具写入文件的路径。 |
操作
下表总结了可用的操作。
| 操作 | 描述 |
|---|---|
| addAbiFlavor | 添加系统架构(ABI)。 |
| addCMake | 添加 CMake 工具的路径。 |
| addDebugger | 添加一个调试器。 |
| addDev | 添加设备。 |
addKeys | 将设置作为<KEY> <TYPE>:<VALUE> 键值对添加。 |
| addKit | 添加一个构建和运行套件。 |
| addQt | 添加一个 Qt 版本。 |
| addTC | 添加一个编译器。 |
find | 查找一个设置值。 |
findKey | 查找设置键。 |
get | 获取设置。 |
rmCMake | 移除 CMake 工具的路径。 |
rmDebugger | 移除一个调试器。 |
rmDev | 移除设备 |
rmKeys | 删除设置。 |
rmQt | 移除一个 Qt 版本。 |
rmTC | 移除编译器。 |
添加系统架构 (ABI)
addAbiFlavor
sdktool addAbiFlavor --flavor <NAME> --oses <OS>(,<OS>)*
addAbiFlavor 选项
下表总结了可用的选项。
| 选项 | 描述 | 必填 |
|---|---|---|
--flavor <NAME> | 系统架构(ABI)的名称。 | ![]() |
--oses <OS>(,<OS>)* | ABI 适用的操作系统。 | ![]() |
ABI 变体示例
要在 Linux 上添加 Yocto Poky,请输入:
./sdktool addAbiFlavor \ --flavor poky \ --oses linux
添加 CMake 工具
addCMake
sdktool addCMake --id <ID> --name <NAME> --path <PATH> [<KEY> <TYPE:VALUE>]
addCMake 选项
下表总结了可用的选项。
| 选项 | 说明 | 必填 |
|---|---|---|
--id <ID> | CMake 安装的 ID。可以是任何 ASCII(7 位)字符串。 如果该字符串中未包含版本号,则在更新此 CMake 安装时,已注册的 CMake 会保留该 ID,因此所有套件都会自动更新为使用新版本。 | ![]() |
--name <NAME> | CMake 安装的名称。 | ![]() |
--path <PATH> | CMake 可执行文件的路径。 | ![]() |
<KEY> <TYPE:VALUE> | 以键值对形式提供的其他设置。 |
有关更多信息,请参阅“添加 CMake 工具”。
CMake 配置示例
要在 Windows 上添加 CMake 工具,请输入:
sdktool addCMake \ --id "my.custom.cmake" \ --name "Custom CMake" \ --path "C:\Program Files\CMake-3.30\bin\cmake.exe"
添加编译器
addTC
sdktool addTC --id <ID> --language <ID> --name <NAME> --path <PATH> --abi <ABI STRING> [OPTIONS]
addTC 选项
下表总结了可用的选项。
| 选项 | 说明 | 必填 |
|---|---|---|
--abi <ABI STRING> | 编译器的 ABI,格式须为ProjectExplorer::Abi::fromString() 可解析的格式。 | ![]() |
--id <ID> | 工具链的 ID,格式为ToolChainType:some_unique_part ,其中工具链类型可以是以下之一,或由插件提供的其他类型:
请查看从
| ![]() |
--language <ID> | 工具链输入语言的 ID:C 或Cxx 。注册 C 或 C++ 编译器时,请务必同时注册相应的 C++ 或 C 编译器。 | ![]() |
--name <NAME> | 工具链的名称。 | ![]() |
--path <PATH> | 编译器可执行文件的路径。 | ![]() |
--supportedAbis <ABI STRING>,<ABI STRING> | 编译器支持的 ABI 列表。 | |
<KEY> <TYPE:VALUE> | 以键值对形式提供的其他设置。 |
有关更多信息,请参阅“添加编译器”。
编译器示例
要在 Linux 上添加 GCC 编译器,请输入:
./sdktool addTC \ --id "ProjectExplorer.ToolChain.Gcc:company.product.toolchain.g++" \ --language Cxx --name "GCC (C++, x86_64)" \ --path /home/code/build/gcc-6.3/usr/bin/g++ \ --abi x86-linux-generic-elf-64bit \ --supportedAbis x86-linux-generic-elf-64bit,x86-linux-generic-elf-32bit \ ADDITIONAL_INTEGER_PARAMETER int:42 \ ADDITIONAL_STRING_PARAMETER "QString:some string" \
添加调试器
addDebugger
sdktool addDebugger --id <ID> --name <NAME> [OPTIONS]
addDebugger 选项
下表总结了可用的选项。
| 选项 | 描述 | 必填 |
|---|---|---|
--abis <ABI,ABI> | 以逗号分隔的系统架构定义列表。 | |
--binary <PATH> | 调试器可执行文件的路径。可以是绝对路径、值auto 或 ABI。当Qt Creator 无法识别二进制文件路径时,用于为 MSVC 工具链查找合适的调试器。 | |
--engine <ENGINE> | 调试器引擎类型:
| |
--id <ID> | 调试器的唯一标识符。 | ![]() |
--name <NAME> | 调试器的名称。 | ![]() |
<KEY> <TYPE:VALUE> | 以键值对形式提供的其他设置。 |
有关更多信息,请参阅“添加调试器”。
调试器示例
要在 Linux 上添加 GDB 调试器,请输入:
./sdktool addDebugger \ --id "company.product.toolchain.gdb" \ --name "GDB (company, product)" \ --engine 1 \ --binary /home/code/build/gdb-7.12/bin/gdb \ --abis arm-linux-generic-elf-32 \
添加设备
addDev
sdktool addDev --id <ID> --name <NAME> --type <INT> [OPTIONS]
addDev 选项
下表总结了可用的选项。具体应使用哪些选项取决于设备类型。
| 选项 | 描述 | 必填 |
|---|---|---|
--authentication <INT> | 身份验证方法:
| |
--b2qHardware <STRING> | Boot to Qt 关于硬件的平台信息。 | |
--b2qSoftware <STRING> | Boot to Qt 关于软件的平台信息。 | |
--debugServerKey <STRING> | 服务器调试密钥。 | |
--dockerClangdExecutable <STRING> | Docker 容器中 Clangd 可执行文件的路径。 | |
--dockerMappedPaths <STRING> | 以分号分隔的 Docker 映射路径列表。 | |
--dockerRepo <STRING> | Docker 镜像仓库。 | |
--dockerTag <STRING> | Docker 镜像标签。 | |
--freePorts <STRING> | 可用端口。 | |
--host <STRING> | 设备的宿主机名或 IP 地址。 | |
--id <ID> | 设备的唯一 ID。 | ![]() |
--keyFile <STRING> | 用户私钥文件的路径。 | |
--name <NAME> | 设备名称。 | ![]() |
--origin <INT> | 设备是否被自动检测到:
| |
--osType <STRING> | 设备上的操作系统:
| |
--password <STRING> | 用于密码认证的密码。 | |
--sshPort <INT> | SSH 连接的端口号。 | |
--timeout <INT> | SSH连接重用的超时时间(单位:秒)。 | |
--type <INT> | 设备类型:
| ![]() |
--uname <STRING> | 用于访问设备的用户名。 | |
<KEY> <TYPE:VALUE> | 以键值对形式提供的其他设置。 |
有关更多信息,请参阅《如何:为设备开发》。
Linux 设备示例
要在 Linux 上添加远程 Linux 设备(硬件设备)并使用 SSH 密钥对设备进行身份验证,请输入:
./sdktool addDev \ --id " LinuxDevice1" \ --name "My Remote Linux Device" \ --type 0 \ --authentication 1 \ --freePorts "10000-10100" \ --host "10.10.10.15" \ --keyFile "/usr/.ssh/qtc_id" \ --origin 0 \ --osType "GenericLinuxOsType" \ --sshPort 22 \ --timeout 10 \ --uname "root"
添加 Qt 版本
addQt
sdktool addQt --id <ID> --name <NAME> --qmake <PATH> --type <TYPE> [OPTIONS]
addQt 选项
下表总结了可用的选项。
| 选项 | 描述 | 必填 |
|---|---|---|
--abis <ABI,ABI> | 以逗号分隔的系统架构定义列表。 | |
--id <ID> | Qt 安装的 ID。Qt Creator 在检测到计算机上安装的 Qt 版本时会自动设置该 ID。 | ![]() |
--name <NAME> | Qt 安装的名称。 | ![]() |
--qmake <PATH> | Qt 安装目录中 qmake 可执行文件的路径。 | ![]() |
--type <TYPE> | Qt 版本的类型:
| ![]() |
<KEY> <TYPE:VALUE> | 以键值对形式提供的其他设置。 |
有关更多信息,请参阅“添加 Qt 版本”。
Qt 版本示例
要在 Linux 上添加自编译的 Qt 6.8 版本,请输入:
./sdktool addQt \ --id "company.product.qt" \ --name "Custom Qt" \ --qmake /home/code/build/qt-6.8/bin/qmake \ --type Qt4ProjectManager.QtVersion.Desktop \
添加套件
addKit
sdktool addKit --id <ID> --name <NAME> --devicetype <TYPE> [OPTIONS]
addKit 选项
下表总结了可用的选项。
| 选项 | 描述 | 必填 |
|---|---|---|
--builddevice <ID> | 用于构建应用程序的设备 ID。 | |
--cmake <ID> | 用于构建项目的 CMake 可执行文件的 ID。 | |
--cmake-config <KEY:TYPE=VALUE> | 套件 CMake 配置的参数。您可以添加多个此类条目。 | |
--cmake-generator <GEN>:<EXTRA>:<TOOLSET>:<PLATFORM> | 用于生成项目文件的 CMake 生成器。 | |
--debugger <PATH> | 套件所用调试器的路径。请勿将此选项与--debuggerid 同时使用。 | |
--debuggerengine <ENGINE> | 通过--debugger 设置的调试器类型。请勿将此选项与--debuggerid 结合使用。 | |
--debuggerid <ID> | 使用addDebugger 操作添加调试器时所用的ID之一。请勿将此选项与--debugger 和--debuggerengine 同时使用。 | |
--device <ID> | 用于运行应用程序的设备。 | |
--devicetype <TYPE> | 用于运行应用程序的设备类型:
| ![]() |
--env <VALUE> | 构建环境的环境变量值。您可以添加多个此类条目。 | |
--run-env <VALUE> | 运行环境的环境变量值。您可以添加多个此类条目。 | |
--icon <PATH> | 用作套件图标的图像路径。 | |
--id <ID> | 套件的 ID。当Qt Creator 检测到计算机上已安装的 Qt 版本时,会自动设置该 ID。 | ![]() |
--<LANG>toolchain <ID> | 使用“addTC ”操作添加编译器时所用的 ID 之一。<LANG> 可以是:C 、Cxx 、Nim ,或由插件设置的值。 | |
--mkspec <PATH> | qmake 使用的“mkspec ”配置。省略此选项将使用所选 Qt 版本的默认mkspec 。 | |
--name <NAME> | 套件的名称。您可以使用变量,根据通过其他操作设置的套件元素(例如 Qt 版本)来生成套件名称。 | ![]() |
--qt <ID> | 使用addQt 操作添加Qt版本时所用的ID之一。 | |
<KEY> <TYPE:VALUE> | 以键值对形式提供的附加设置。 |
有关更多信息,请参阅“添加套件”。
套件示例
要添加一个使用 GCC 编译器和自构建的 Qt 在 Linux 上构建应用程序的套件,请输入:
./sdktool addKit \ --id "company.product.kit" \ --name "Qt %{Qt:Version} (company, product)" \ --debuggerid "company.product.toolchain.gdb" \ --devicetype GenericLinuxOsType \ --sysroot /tmp/sysroot \ --Ctoolchain "ProjectExplorer.ToolChain.Gcc:company.product.toolchain.gcc" \ --Cxxtoolchain "ProjectExplorer.ToolChain.Gcc:company.product.toolchain.g++" \ --qt "company.product.qt" \ --mkspec "devices/linux-mipsel-broadcom-97425-g++" \
添加、获取和查找键
输入相对于顶级设置目录的文件路径(不带.xml 扩展名),后跟一个或多个<KEY> <TYPE>:<VALUE> 键值对。
删除已配置的项目
要删除 CMake 工具、编译器、调试器、设备、Qt 版本或套件,请输入:
rm<Item> --id <ID>
其中<ID> 是该项的 ID。
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.
