Qt Creator 不会从外部生成的 .creator.user 文件加载设置 [英] Qt Creator doesn't load settings from externally generated .creator.user file

查看:39
本文介绍了Qt Creator 不会从外部生成的 .creator.user 文件加载设置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试为许多通用 Qt Creator 项目生成 .creator.user 文件.我正在使用自定义构建工具,并希望每个 Qt Creator 项目都使用自定义构建命令来调用此工具,这就是为什么我要弄乱 .creator.user 文件的原因.不幸的是,我生成的 .creator.user 文件被重命名为 .creator.user.1.3 并被 Qt Creator 忽略,然后生成默认的 .creator.user 不使用我的设置的文件.关于如何让 Qt Creator 正确加载我的设置的任何建议?

I am trying to generate .creator.user files for many generic Qt Creator projects. I am using a custom build tool and would like to have each Qt Creator project use custom build commands to call this tool, which is why I'm messing with .creator.user files. Unfortunately, the .creator.user files I'm generated are being renamed .creator.user.1.3 and ignored by Qt Creator, which then generates default .creator.user files that don't use my settings. Any suggestions for how to make Qt Creator correctly load my settings?

这是一个示例 .creator.user 文件.我已将工作目录名称更改为 @DIRECTORY@;在实际文件中,这是一个实际目录.

Here is a sample .creator.user file. I have changed the working directory names to @DIRECTORY@; in the real files this is an actual directory.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by SwT 0.8.0, 12/21/2012 15:17:33. -->
<qtcreator>
 <data>
  <variable>ProjectExplorer.Project.Target.0</variable>
  <valuemap type="QVariantMap">
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">SwT</value>
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">SwT</value>
   <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">{86eb24f3-777f-41df-b796-d5d8d9a9739a}</value>
   <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
   <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
   <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
    <value type="QString" key="GenericProjectManager.GenericBuildConfiguration.BuildDirectory"></value>
    <valuemap type="QVariantMap" key=with open(creatorf,'w') as f:
                    f.write('[General'"ProjectExplorer.BuildConfiguration.BuildStepList.0">
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProcessStep.Arguments">build -j3</value>
      <value type="QString" key="ProjectExplorer.ProcessStep.Command">swt</value>
      <value type="QString" key="ProjectExplorer.ProcessStep.WorkingDirectory">@DIRECTORY@</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Custom Process Step</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.ProcessStep</value>
     </valuemap>
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
    </valuemap>
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProcessStep.Arguments">clean</value>
      <value type="QString" key="ProjectExplorer.ProcessStep.Command">swt</value>
      <value type="QString" key="ProjectExplorer.ProcessStep.WorkingDirectory">@DIRECTORY@</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Custom Process Step</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.ProcessStep</value>
     </valuemap>
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
    </valuemap>
    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName"></value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
    <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">GenericProjectManager.GenericBuildConfiguration</value>
   </valuemap>
   <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
    </valuemap>
    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy locally</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
    <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
   </valuemap>
   <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
    <value type="bool" key="Analyzer.Project.UseGlobal">true</value>
    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
     <value type="int">0</value>
     <value type="int">1</value>
     <value type="int">2</value>
     <value type="int">3</value>
     <value type="int">4</value>
     <value type="int">5</value>
     <value type="int">6</value>
     <value type="int">7</value>
     <value type="int">8</value>
     <value type="int">9</value>
     <value type="int">10</value>
     <value type="int">11</value>
     <value type="int">12</value>
     <value type="int">13</value>
     <value type="int">14</value>
    </valuelist>
    <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Arguments"></value>
    <value type="int" key="ProjectExplorer.CustomExecutableRunConfiguration.BaseEnvironmentBase">2</value>
    <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable"></value>
    <value type="bool" key="ProjectExplorer.CustomExecutableRunConfiguration.UseTerminal">false</value>
    <valuelist type="QVariantList" key="ProjectExplorer.CustomExecutableRunConfiguration.UserEnvironmentChanges"/>
    <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.WorkingDirectory">%{buildDir}</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Custom Executable</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
    <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
    <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
    <value type="bool" key="RunConfiguration.UseCppDebugger">true</value>
    <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
   </valuemap>
   <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
  </valuemap>
 </data>
 <data>
  <variable>ProjectExplorer.Project.TargetCount</variable>
  <value type="int">1</value>
 </data>
 <data>
  <variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
  <value type="QString">{250c1e28-1243-4796-af2e-509ff8b0cce9}</value>
 </data>
 <data>
  <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
  <value type="int">12</value>
 </data>
</qtcreator>

推荐答案

Creator 在发现 .user 文件需要升级时生成 .user.version 文件.理由是这样的:如果您运行一个 Creator 版本并为此配置了您的项目,并且您想要例如测试一个新的 beta 版本,那么这很可能需要更改配置.因此,它会将您当前的设置复制到 .user.version,然后更新 .user 中的所有内容.

Creator generates .user.version files when it finds the .user file to be in need of upgrading. The reasoning is this: If you run an version of Creator and have your project configured for that and you want to e.g. test a new beta release, then that will most likely require changes to the configuration. So it copies your current settings to .user.version and then updates whatever is in .user.

所以您似乎生成了旧版本的 .user 文件.虽然创建者试图保持一切完好无损,但升级可能会出错,尤其是在转换过程中经历几个步骤时(从 1.3 到 2.0,再到 2.1,...).

So you seem to be generating an old version of the .user file. While creator tries to keep everything intact, upgrades can go wrong, especially when going through several steps in the conversion process (going from 1.3 to 2.0, to 2.1, ...).

我建议为您的 .user-file 创建者使用更新的模板,然后从该模板开始.如果您设置了目标/工具包/构建步骤等,如果创建者认为它们已损坏,它也会将它们丢弃并重新生成它们,因此请确保它们确实有效.

I recommend using a newer template for your .user-file creator and starting with that. If you set up targets/kits/build steps, etc. creator will also throw them out and regenerate them if it thinks they are broken, so make sure they are indeed valid.

您也可以考虑将一些设置移动到 .shared 文件中.这些与 .user 文件重新组合(.user 优先),可用于在第一次打开项目时初始化设置.由于创建者对 Qt 版本等使用特定于实例的 id,这还不能很好地设置目标,但是使用 2.6 和套件,如果您确保每个用户都有带有相同的 ID(例如,使用 Qt 5 版本中的 ID).

You might also consider to move some settings into .shared files. These get recombined with the .user file (the .user has precedence) and can be used to initialize settings when the project is opened for the first time. Since creator uses instance-specific ids for Qt versions, etc. that does not work too well to set up targets yet, but with 2.6 and the kits you can get pretty far there, too, if you make sure every user has kits with the same Ids (e.g. by using those from the Qt 5 version).

PS:确保添加 ProjectExplorer.Project.Updater.FileVersion 变量,该变量定义文件中使用的架构版本.

这篇关于Qt Creator 不会从外部生成的 .creator.user 文件加载设置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆