我该如何在Qt的*.pro文件中设置环境变量?

8
在构建时,我希望通过环境变量来加速构建:
MAKEFLAGS=-j12

我知道如何在Qt Creator中设置:

  1. 项目 → 构建 → 构建环境详细信息 → 添加

  2. 添加值为-j12MAKEFLAGS

这会在*.pro.user文件中显示为:

<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges">
  <value type="QString">MAKEFLAGS=-j12</value>
</valuelist>

这个过程非常有效,可以加快编译速度,但我必须为每个工具包和调试/发布组合进行此步骤。当我升级Qt版本时,我必须为每个组合重新执行此过程。

如何在*.pro文件中设置环境变量,并使环境变量传播到每个构建流程中?

根据注释和链接的问题,我尝试了*.pro.shared,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<qtcreator>
  <data>
  <variable>ProjectExplorer.Project.Target.0</variable>
  <valuemap type="QVariantMap">
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges">
     <value type="QString">MAKEFLAGS=-j12</value>
    </valuelist>
   </valuemap>
  </valuemap>
 </data>
 <data>
  <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
  <value type="int">18</value>
 </data>
 <data>
  <variable>Version</variable>
  <value type="int">18</value>
 </data>
</qtcreator>

当我进行了清理后,Qt Creator在重新启动时会重新生成*.pro.user文件,并生成18个匹配项。


1
我从未使用过,但猜测这是什么意思:$(VAR) => 在运行Makefile(而不是qmake)时环境变量的内容 - Mohammad Kanan
2
可能是通过.pro项目文件在Qt Creator中使用MAKEFLAGS的重复问题。 - eyllanesc
@MohammadKanan,你能详细说明一下你的意思吗? - Ross Rogers
1
根据评论和链接的问题,我已经尝试了*.pro.shared,如下所示:... 那没用吗?使用的是哪个操作系统?也许只需使用修改后的环境运行QtCreator和/或qmake。例如,在bash中,您可以执行:MAKEFLAGS=-j12 qmake - Super-intelligent Shade
1
可恶,你说得没错 @InnocentBystander。我打算修改所有入口点到Qt Creator以设置该环境变量。比在Qt Creator内部做任何事情容易多了。 - Ross Rogers
显示剩余5条评论
1个回答

0

您可以为每个工具包设置默认环境变量。无需重新生成 .pro 或 .pro.user 文件即可实现。添加定义后,它将自动对项目生效。

只需转到“工具”|“选项”|“工具包”,选择您的工具包。然后,向下滚动到左侧有“环境”标签,右侧有“更改”按钮的位置。单击它。然后,在该窗口中粘贴 MAKEFLAGS=-j4。如果您关闭首选项并转到项目,并在左侧选择编译器的“构建”条目,然后向右滚动到您的构建环境,您会在那里找到它。然后,使用该工具集创建的每个项目都将具有该环境变量。当然,每次更新编译器时,您都必须重新定义它。


我已经用那种方式做了,但是如何在pro文件中设置,以便在不同的机器上编译时获得编辑?我不想进入kit并在5.10、5.11.1、5.12.0、5.13.1、5.13.2、5.13.3和每个release/debug/profile以及android/windows/linux组合上更改它,然后在每台机器上都这样做。我希望在repo的pro文件中有一种简单的方法来实现这一点。 - Ross Rogers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接