C++ 让qmake使用32位和64位并排安装
我想让我们正在构建的Qt版本在源代码管理下,并希望从同一个源代码文件夹中并行构建32位和64位Qt,以节省源代码管理中的空间 设置库路径很容易,我只是在我的QMAKE文件中有C++ 让qmake使用32位和64位并排安装,c++,qt,qmake,C++,Qt,Qmake,我想让我们正在构建的Qt版本在源代码管理下,并希望从同一个源代码文件夹中并行构建32位和64位Qt,以节省源代码管理中的空间 设置库路径很容易,我只是在我的QMAKE文件中有QMAKE\u LIBDIR\u QT=$$PWD/Shared/QT/${QT\u MAJOR\u VERSION}.$$${QT\u MINOR\u VERSION}.$$${QT\u PATCH\u VERSION}/lib/$${ARCH}和一个类似的声明 但是,划分bin/文件夹并不容易。从../bin/x64文件
QMAKE\u LIBDIR\u QT=$$PWD/Shared/QT/${QT\u MAJOR\u VERSION}.$$${QT\u MINOR\u VERSION}.$$${QT\u PATCH\u VERSION}/lib/$${ARCH}
和一个类似的声明
但是,划分bin/
文件夹并不容易。从../bin/x64
文件夹使用qmake时,它会检测到QT\u HOST\u-bin
和QT\u INSTALL\u-bin
为../bin//code>,当我构建时,它会尝试从该文件夹运行uic和其他工具,但失败
声明这些变量可以通过运行qmake-set QT_HOST_BIN path
来设置,但这似乎是一个系统范围的设置,这是不可取的,无论如何都不起作用,也不能将它们设置为环境变量
在这一点上,我倾向于放弃,转而为32位和64位安装两个单独的Qt。尤其是因为我还没有开始研究如何处理插件
文件夹。似乎QT根本不考虑一个多拱形的构建设置。 我找到了哪些指向qt.conf
。我发现在bin/x64
和bin/x86
文件夹中有不同的qt.conf
文件,我可以将它们指向不同的文件夹,例如:
[Paths]
Prefix = ../..
Binaries = bin/x64
Plugins = plugins/x64
使用此设置,构建可以成功地与独立的bin/
文件夹一起工作
然而,我在阅读答案时发现的另一个问题是,所有的.prl文件中都有硬编码的路径。这意味着,如果代码签出到其他目录,则可能不会生成此代码。我将不得不在另一个问题中询问这一点,看看是否可以将Qt置于源代码控制之下
编辑:目前看来,似乎可以通过编辑所有的.prl文件以使用相对路径来解决这个问题。我不知道为什么它们一开始不是相对路径,因为似乎不希望您弄乱目录结构。没有必要这么复杂。您需要3或5个文件夹:
工作副本中的Qt源文件夹
32位生成文件夹
64位生成文件夹
32位安装文件夹
64位安装文件夹
如果希望将二进制文件存储在源代码管理中,则除了存储文件夹1外,只需存储文件夹4和5
Qt的源代码中没有任何文件的调整。构建使用Qt的项目时,必须使用文件夹2或文件夹3中的qmake,具体取决于您对构建的选择。您还可以通过这种方式构建多个Qt版本,包括构建qt4和qt5
由于必须在源代码管理中保留二进制文件是非常愚蠢的,因此您应该编写一个顶级makefile或批处理文件:
- 配置、构建和安装所需的每个Qt构建
- 运行相关的qmakes为项目准备makefile
- 最后,构建项目
然后,在签出时,您只需运行一个脚本或make即可构建所有内容。您还应该从Qt Creator下载绑定jom.exe,因为这将并行构建nmake makefiles
我要强调的是,不需要对任何Qt源代码进行任何更改,也不需要在项目文件中执行任何操作来使用Qt的特定版本。一切都由您为项目设置makefile而调用的qmake决定
您还需要为应用程序使用卷影生成文件夹。一般来说,不使用卷影构建文件夹会适得其反。在对源代码进行小的更改后为多个目标重建时,它们可以节省大量时间。不要介意在不使用卷影生成时需要保持源文件夹的多个副本同步。这不值得