让qmake与32位和64位并行安装一起工作
我想要在源代码控制下创建我们正在构建的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_BIN
和QT_INSTALL_BINS
为.../bin/
,当我构建它时,会尝试从此文件夹运行uic和其他工具并失败。
的documentation指出,这些变量可以通过运行qmake -set QT_HOST_BIN path
设置,但是这似乎是一个系统范围的设置,这是不可取的,不反正工作,既没有将它们设置为环境变量。
在这一点上,我倾向于放弃和去为32位和64位两个单独的Qt安装。特别是因为我还没有开始考虑如何处理plugins
文件夹。看起来好像Qt甚至没有开始考虑多拱形构建设置。
不需要任何这种复杂性。您需要3或5个文件夹:
- Qt源文件夹,在您的工作副本中。
- 32位生成文件夹。
- 64位生成文件夹。
- 32位安装文件夹。
- 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。
您也需要为您的应用程序使用阴影构建文件夹。一般来说,不使用阴影构建文件夹是适得其反的。在源码更改后重建多个目标时,它们可以节省大量时间。没关系当使用影子构建而不是时,需要保持源文件夹的多个副本同步。这是不值得的。
我找到了this answer,它指向qt.conf
。我想通了,有在bin/x64
和bin/x86
文件夹不同qt.conf
文件,我可以在不同的文件夹指向它们,例如:
[Paths]
Prefix = ../..
Binaries = bin/x64
Plugins = plugins/x64
使用此设置构建与分离bin/
文件夹成功的作品。
但是,我在阅读该答案时发现的另一个问题是,所有.prl文件在其中都会有硬编码的路径。这意味着如果代码被检出到不同的目录,这可能不会生成。我将不得不在另一个问题上询问这个问题,看看是否可以将Qt置于源代码控制之下。
编辑:现在看起来好像可以通过编辑所有的.prl文件来使用相对路径来解决这个问题。我不确定他们为什么不是相对路径,因为它似乎不应该混淆目录结构。