Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 让qmake使用32位和64位并排安装_C++_Qt_Qmake - Fatal编程技术网

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

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文件

我想让我们正在构建的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时,它会检测到
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决定

    您还需要为应用程序使用卷影生成文件夹。一般来说,不使用卷影构建文件夹会适得其反。在对源代码进行小的更改后为多个目标重建时,它们可以节省大量时间。不要介意在不使用卷影生成时需要保持源文件夹的多个副本同步。这不值得