让qmake使用32位和64位并排安装

时间:2014-09-02 10:18:41

标签: c++ qt qmake

我希望在源代码管理下构建我们正在构建的Qt版本,并且希望在同一源文件夹中并排构建32位和64位Qt,以节省源代码控制中的空间。

设置库路径很简单,我的qmake文件中只有QMAKE_LIBDIR_QT=$$PWD/Shared/Qt/$${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION}/lib/$${ARCH}QMAKE_LIBDIR的类似声明。

然而,将bin/文件夹分开并不容易。当从.../bin/x64文件夹使用qmake时,它会将QT_HOST_BINQT_INSTALL_BINS检测为.../bin/,当我构建它时会尝试从此文件夹运行uic和其他工具并失败。

documentation 表示可以通过运行qmake -set QT_HOST_BIN path来设置这些变量,但这似乎是系统范围的设置,这是不受欢迎的,无论如何都不起作用,也没有将它们设置为环境变量。

此时我倾向于放弃并为32位和64位分别进行两次Qt安装。特别是因为我还没有开始考虑如何处理plugins文件夹。似乎Qt甚至没有开始考虑多拱构建设置。

2 个答案:

答案 0 :(得分:1)

不需要任何这种复杂性。您需要3或5个文件夹:

  1. Qt源文件夹,位于工作副本中。
  2. 32位构建文件夹。
  3. 64位构建文件夹。
  4. 32位安装文件夹。
  5. 64位安装文件夹。
  6. 如果您希望将二进制文件存储在源代码管理中,除了文件夹1之外,您只需要存储文件夹4和5.

    在Qt的来源中没有调整任何文件。构建使用Qt的项目时,必须使用文件夹#2或文件夹#3中的qmake,具体取决于您对构建的选择。你也可以用这种方式构建多个Qt版本,包括为Qt 4和Qt 5构建。

    由于必须在源代码管理中保留二进制文件,所以你应该编写一个顶级的makefile或批处理文件:

    • 配置,构建和安装您需要的每个Qt构建。
    • 运行相关的qmakes来为您的项目准备makefile。
    • 最后,构建项目。

    然后,在结账时,您需要获得所有内容的所有内容只运行一个脚本或make。您还应该从Qt Creator的下载包中捆绑jom.exe,因为这将并行构建nmake makefile。

    我强调任何Qt来源都需要无变更,并且您不需要在项目文件中执行任何来使用Qt的特定版本。所有内容都由您调用的qmake确定,以便为项目设置Makefile。

    您还需要为应用程序使用shadow build文件夹。一般来说,不使用阴影构建文件夹会适得其反。在小的源更改后重建多个目标时,它们可以节省大量时间。当使用阴影构建时,不要在意将源文件夹的多个副本保持同步。它不值得。

答案 1 :(得分:0)

我发现this answer指向qt.conf。我发现在qt.confbin/x64文件夹中有不同的bin/x86文件,我可以将它们指向不同的文件夹,例如:

[Paths]
Prefix = ../..
Binaries = bin/x64
Plugins = plugins/x64

使用此设置,构建可以使用分隔的bin/文件夹成功运行。

然而,我在阅读该答案时发现的另一个问题是所有.prl文件中都包含硬编码路径。这意味着如果代码被签出到不同的目录,这可能不会构建。我将不得不在另一个问题中询问这个问题,看看是否可以将Qt置于源代码管理之下。

编辑:现在似乎可以通过编辑所有.prl文件来使用相对路径来解决这个问题。我不确定为什么他们不是相对路径开始,因为看起来你不应该弄乱目录结构。