如何将Qt Creator套件(Kit)设置复制导入到其他计算机
Qt Creator 跨设备自动导入套件配置实现方法
直接修改XML配置的思路本身可行,手动修改后配置被程序自动还原,核心是遗漏了几个关键约束:
- Qt Creator 启动时会校验
~/.config/QtProject/qtcreator/QtCreator.ini中存储的配置版本戳、已注册条目计数,仅修改XML文件内的Profile.Count值,未同步更新ini文件内的对应校验值,程序检测到配置不匹配就会自动回滚到上一次的有效配置快照。 - 配置修改操作必须在Qt Creator完全退出、后台无任何qtcreator残留进程时执行,只要有相关进程驻留,程序退出时就会用内存中存储的旧配置覆盖磁盘上的修改内容。
- 所有新增配置实体(编译器、调试器、Qt版本、设备、套件本身)不能复用已有配置的UUID,必须生成全新的唯一UUID,仅保证跨关联文件的UUID引用一致不足以通过校验。
推荐实现方案:使用官方自带sdktool命令行工具
这是最稳定的实现方式,不需要手动编辑任何XML文件,所有配置操作走官方原生接口,完全不会破坏用户已有自定义配置,也不会出现配置回滚问题。sdktool是Qt Creator自带的命令行配置工具,默认位于Qt Creator安装目录下的libexec/qtcreator/sdktool路径,脚本中可先自动探测该路径再调用,常用操作命令如下:
- 新增交叉编译工具链
sdktool addTC \ --id "ProjectExplorer.ToolChain.Gcc:$(uuidgen)" \ --name "团队自定义交叉GCC" \ --path "/opt/your-toolchain-path/bin/arm-linux-gnueabihf-gcc" \ --abi "arm-linux-generic-elf-32bit" # 按实际目标架构调整abi值
- 新增交叉调试器
sdktool addDebugger \ --id "$(uuidgen)" \ --name "团队自定义交叉GDB" \ --path "/opt/your-toolchain-path/bin/arm-linux-gnueabihf-gdb"
- 新增交叉Qt版本
sdktool addQt \ --id "$(uuidgen)" \ --name "团队自定义交叉Qt" \ --type "Qt4ProjectManager.QtVersion.RemoteLinux" \ --qmake "/opt/your-sysroot-path/usr/bin/qmake"
- 新增远程设备配置(按需)
sdktool addDev \ --id "$(uuidgen)" \ --name "团队默认目标设备" \ --type "GenericLinuxOsType" \ --origin 0 \ --osType "GenericLinuxOsType" \ --host "192.168.1.100" \ --username "root" \ --password "" \ --sshPort 22
- 新增构建套件(Kit/Profile)
sdktool addKit \ --id "$(uuidgen)" \ --name "团队标准交叉编译套件" \ --devicetype "RemoteLinux.EmbeddedLinux" \ --device "<之前新增设备生成的UUID>" \ --sysroot "/opt/your-sysroot-path" \ --debuggerid "<之前新增调试器生成的UUID>" \ --qt "<之前新增Qt版本生成的UUID>" \ --toolchain "<之前新增工具链生成的UUID>"
脚本中可在写入配置前,先通过
sdktool list命令拉取现有所有配置的名称、ID做去重判断,检测到已存在同名团队配置时直接跳过写入,完全不会影响用户原有自定义配置。
备选方案:手动修改XML配置的必要步骤
如果环境中找不到sdktool,必须手动修改配置文件时,严格按以下顺序操作即可成功:
- 先执行
pkill -9 qtcreator确认所有Qt Creator相关进程完全退出 - 不要仅修改
profiles.xml,需要同步修改所有关联配置文件:toolchains.xml:存储编译器配置debuggers.xml:存储调试器配置qtversions.xml:存储Qt版本配置devices.xml:存储远程设备配置profiles.xml:存储构建套件配置QtCreator.ini:同步更新文件内对应配置类别的条目计数值、配置版本戳,保证和XML文件内的计数、版本完全匹配
- 所有新增条目使用
uuidgen生成全新的唯一UUID,禁止复用已有配置中的UUID,跨文件引用时使用对应新生成的UUID - 修改完成后无需手动删除cache目录,Qt Creator下次启动时会自动重建缓存
内容的提问来源于stack exchange,提问作者kochy
相关产品推荐
相关产品推荐

