我希望在源代码管理下构建我们正在构建的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_BIN
和QT_INSTALL_BINS
检测为.../bin/
,当我构建它时会尝试从此文件夹运行uic和其他工具并失败。
documentation 表示可以通过运行qmake -set QT_HOST_BIN path
来设置这些变量,但这似乎是系统范围的设置,这是不受欢迎的,无论如何都不起作用,也没有将它们设置为环境变量。
此时我倾向于放弃并为32位和64位分别进行两次Qt安装。特别是因为我还没有开始考虑如何处理plugins
文件夹。似乎Qt甚至没有开始考虑多拱构建设置。
答案 0 :(得分:1)
不需要任何这种复杂性。您需要3或5个文件夹:
如果您希望将二进制文件存储在源代码管理中,除了文件夹1之外,您只需要存储文件夹4和5.
在Qt的来源中没有调整任何文件。构建使用Qt的项目时,必须使用文件夹#2或文件夹#3中的qmake,具体取决于您对构建的选择。你也可以用这种方式构建多个Qt版本,包括为Qt 4和Qt 5构建。
由于必须在源代码管理中保留二进制文件,所以你应该编写一个顶级的makefile或批处理文件:
然后,在结账时,您需要获得所有内容的所有内容只运行一个脚本或make。您还应该从Qt Creator的下载包中捆绑jom.exe,因为这将并行构建nmake makefile。
我强调任何Qt来源都需要无变更,并且您不需要在项目文件中执行任何来使用Qt的特定版本。所有内容都由您调用的qmake确定,以便为项目设置Makefile。
您还需要为应用程序使用shadow build文件夹。一般来说,不使用阴影构建文件夹会适得其反。在小的源更改后重建多个目标时,它们可以节省大量时间。当不使用阴影构建时,不要在意将源文件夹的多个副本保持同步。它不值得。
答案 1 :(得分:0)
我发现this answer指向qt.conf
。我发现在qt.conf
和bin/x64
文件夹中有不同的bin/x86
文件,我可以将它们指向不同的文件夹,例如:
[Paths]
Prefix = ../..
Binaries = bin/x64
Plugins = plugins/x64
使用此设置,构建可以使用分隔的bin/
文件夹成功运行。
然而,我在阅读该答案时发现的另一个问题是所有.prl文件中都包含硬编码路径。这意味着如果代码被签出到不同的目录,这可能不会构建。我将不得不在另一个问题中询问这个问题,看看是否可以将Qt置于源代码管理之下。
编辑:现在似乎可以通过编辑所有.prl文件来使用相对路径来解决这个问题。我不确定为什么他们不是相对路径开始,因为看起来你不应该弄乱目录结构。