2014-09-02 157 views
0

我想要在源代码控制下创建我们正在构建的Qt版本,并希望同时构建32位和64位Qt源文件夹以便节省源代码管理中的空间。让qmake与32位和64位并行安装一起工作

设置库路径很简单,我只需要在我的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甚至没有开始考虑多拱形构建设置。

回答

1

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

  1. Qt源文件夹,在您的工作副本中。
  2. 32位生成文件夹。
  3. 64位生成文件夹。
  4. 32位安装文件夹。
  5. 64位安装文件夹。

如果您希望将二进制文件存储在源代码控制,你只需要存储的文件夹4和5除了文件夹1.

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

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

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

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

我强调一点,没有改变需要任何的Qt的来源,你不需要做任何事情项目文件使用Qt的特定版本。一切都取决于您为项目设置Makefiles所调用的qmake。

您也需要为您的应用程序使用阴影构建文件夹。一般来说,不使用阴影构建文件夹是适得其反的。在源码更改后重建多个目标时,它们可以节省大量时间。没关系当使用影子构建而不是时,需要保持源文件夹的多个副本同步。这是不值得的。

0

我找到了this answer,它指向qt.conf。我想通了,有在bin/x64bin/x86文件夹不同qt.conf文件,我可以在不同的文件夹指向它们,例如:

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

使用此设置构建与分离bin/文件夹成功的作品。

但是,我在阅读该答案时发现的另一个问题是,所有.prl文件在其中都会有硬编码的路径。这意味着如果代码被检出到不同的目录,这可能不会生成。我将不得不在另一个问题上询问这个问题,看看是否可以将Qt置于源代码控制之下。

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