只是一个帖子来帮助那些试图做到这一点的人,因为我没有博客。
这也适用于 linux。随意编辑它并改进它。
最佳答案
注意:还有另一篇我写给 compile from GIT source here with an automated script 在 Windows 上的文章。您可以针对 Linux 修改它,因为本文中显示了差异。
本文持续更新中。如果这对您有帮助,请给它“竖起大拇指”,以便我知道它是在帮助人们而不是无用。
如果您有任何意见或发现错别字,请告诉我,以便我可以更正。
首先,您要编译 32 位还是 64 位版本并不重要。唯一的区别是您必须从 Visual Studio 中选择的命令提示符快捷方式,它将初始化不同的环境变量。
让我们从这个开始:
我使用 Windows 8,所以这是我使用的版本:Download link
, 否则为您的 Windows 找到合适的版本。
Download link
C:\Qt\Qt5.6
可以找到1423181423181423181431814318 通常,即使您选择静态编译,编译器本身仍然不会静态合并其库。如果您希望编译源相对于编译器 (Visual Studio) 完全静态,则必须在 Qt 的 QMAKE 文件中进行此调整。
转到文件(从你的Qt源目录开始), 高于2012的版本,只需在任何地方使用正确的版本(例如win32-msvc2015) :
并编辑以下几行
QMAKE_CFLAGS_RELEASE = -O2 -MD
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi
QMAKE_CFLAGS_DEBUG = -Zi -MDd
到
QMAKE_CFLAGS_RELEASE = -O2 -MT
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
QMAKE_CFLAGS_DEBUG = -Zi -MTd
注意:Qt 5.6+ 有一个配置参数
qtbase
可以为你做这件事。对于新版本的 Qt,您可能不再需要手动执行此操作。对于 8 之前的 Windows 版本:找到 Microsoft Visual Studio 201x 文件夹,然后启动命令提示符(x86 用于 32 位或 x64 用于 64 位)。
对于 Windows 8:转到“开始”,键入“cmd”,然后将显示可用于命令提示符的所有版本。选择合适的 Visual Studio 版本(x86 用于 32 位或 x64 用于 64 位)。
以下是它的外观的屏幕截图。如果存在,总是倾向于选择“ native ”。
vcvarsall.bat
9.
set QMAKESPEC=win32-msvc2012
set QTDIR=C:\Qt\Qt5.7\qtbase
set PATH=C:\Qt\Qt5.7\qtbase\bin;%PATH%
注意:对于 Qt 5.8+ 版本,设置
C:\Qt\Qt5.6\qtbase
环境变量被认为是错误的。不要为新版本这样做。用于动态链接(需要 8 GB)
configure -debug-and-release -opensource -platform win32-msvc2012 -opengl desktop
对于没有示例的动态链接(需要 2 GB)
configure -debug-and-release -opensource -platform win32-msvc2012 -opengl desktop -nomake examples -nomake tests
Now the last command depends on what you want to compile. Just type configure -help and see what the available command-line parameters are.
对于静态链接(需要 70 GB,是的,这很疯狂,不制作示例和演示更合理)。
configure -debug-and-release -opensource -platform win32-msvc2012 -opengl desktop -static
对于没有示例的静态链接(需要 4 GB,更有意义)。
configure -debug-and-release -opensource -platform win32-msvc2012 -opengl desktop -static -nomake examples -nomake tests
现在这将需要一两分钟,然后按如下方式使用 jom(假设它是在 C:\Qt\jom 中提取的):
C:\Qt\jom\jom.exe -j 50
50 表示您要使用的核心数。我使用 50 是因为我有 8 个线程并且只使用 8 个不会完全占用所有内核,所以更多更好,但不要太贪婪,因为它可能会使您的系统没有响应。
set QMAKESPEC=win32-msvc2010
set QTDIR=C:\Qt\Qt5.7\qtbase
set PATH=C:\Qt\Qt5.7\qtbase\bin;%PATH%
注意:对于 Qt 5.8+ 版本,设置
-static-runtime
环境变量被认为是错误的。不要为新版本这样做。用于动态链接(需要 8 GB)
configure -debug-and-release -opensource -platform win32-msvc2010 -opengl desktop
对于没有示例的动态链接(需要 2 GB)
configure -debug-and-release -opensource -platform win32-msvc2010 -opengl desktop -nomake examples -nomake tests
最后一个命令取决于您要编译的内容。只需键入 configure -help 并查看可用的命令行参数是什么。
对于静态链接(需要 70 GB,是的,这很疯狂,不制作示例和演示更合理)。
configure -debug-and-release -opensource -platform win32-msvc2010 -opengl desktop -static
对于没有示例的静态链接(需要 4 GB,更有意义)。
configure -debug-and-release -opensource -platform win32-msvc2010 -opengl desktop -static -nomake examples -nomake tests
现在这将需要一两分钟,然后按如下方式使用 jom(假设它是在 C:\Qt\jom 中提取的):
C:\Qt\jom\jom.exe -j 50
50 表示您要使用的核心数。我使用 50 是因为我有 8 个线程并且只使用 8 个不会完全占用所有内核,所以更多更好,但不要太贪婪,因为它可能会使您的系统没有响应。
Linux 与 Windows 之间存在一个小差异。建议在linux下编译后安装。老实说,这是对我没有问题的唯一方法。
对 Linux 执行以下命令。不要忘记用 Qt 源的正确路径替换路径
export QMAKESPEC=linux-g++
export QTDIR=/home/username/Qt5.7/qtbase
export PATH=/home/username/Qt5.7/qtbase/bin:$PATH
注意:对于 Qt 5.8+ 版本,设置
QMAKESPEC
环境变量被认为是错误的。不要为新版本这样做。假设您要将编译后的源代码安装到目录
QMAKESPEC
中。在这种情况下,请将以下内容添加到以下任一配置命令中:-prefix /home/username/Qt5.7-install
警告 :不要安装到相同的源目录。那是完全错误的!
如果未设置
QMAKESPEC
,则将选择默认路径,我猜是 /home/username/Qt5.7-install
。我不喜欢使用 root 安装任何东西。我总是喜欢在我的用户文件夹中安装,这样可逆性和升级就不是问题。以下是不同的可能
-prefix
命令,具体取决于您要执行的操作。用于动态链接(需要 8 GB)
./configure -debug-and-release -opensource -platform linux-g++ -opengl desktop
对于没有示例的动态链接(需要 2 GB)
./configure -debug-and-release -opensource -platform linux-g++ -opengl desktop -nomake examples -nomake tests
现在最后一个命令取决于您要编译的内容。只需输入
/usr/local/
并查看可用的命令行参数是什么。对于静态链接(需要 70 GB,是的,这很疯狂,不制作示例和测试更合理)。
./configure -debug-and-release -opensource -platform linux-g++ -opengl desktop -static
对于没有示例的静态链接(需要 4 GB,更有意义)。
./configure -debug-and-release -opensource -platform linux-g++ -opengl desktop -static -nomake examples -nomake tests
制作完成后,运行make命令
make -j 50
50 表示您要使用的核心数。我使用 50 是因为我有 8 个线程并且只使用 8 个不会完全占用所有内核,所以更多更好,但不要太贪婪,因为它可能会使您的系统没有响应。
configure
而此命令适用于 linux:./configure -help
您可以将编译文件夹的大小从 8 GB 减少到 2.5 GB(用于动态链接)和从 70 GB 减少到 35 GB(用于静态链接)。
为了在 Qt Creator 中使用这个编译版本:
qtbase 是,所以从上面:
C:\Qt\Qt5.7\qtbase\bin\qmake.exe
(或者对于Linux,选择你安装编译好的Qt源的路径,相当于本教程中的
C:\Qt\jom\jom.exe clean
)EXPRESS DO NOT SELECT amd64 FOR 64-BIT ,它不起作用,选择
x86_amd64 取而代之)
现在只需打开一个项目,您就会发现它要求您选择您添加的套件。
享受 :)
关于c++ - 如何在 Windows 或 Linux、32 或 64 位、静态或动态的 Visual Studio 或 g++ 下编译 Qt 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14932315/