只是一个帖子来帮助那些试图这样做的人,因为我没有博客。
这也适用于linux。随意编辑和改进它。
只是一个帖子来帮助那些试图这样做的人,因为我没有博客。
这也适用于linux。随意编辑和改进它。
注意:我还写了另一篇文章,用Windows 上的自动脚本从 GIT 源代码编译。您可以为 Linux 修改它,因为差异显示在这篇文章中。
本文不断更新。如果这对您有帮助,请给它“竖起大拇指”,这样我就可以知道它是在帮助人们而不是无用。
如果您有任何意见或发现拼写错误,请告诉我,以便我改正。
首先,无论您要编译 32 位还是 64 位版本都没有关系。唯一的区别是您必须从 Visual Studio 中选择的命令提示符快捷方式,它将初始化不同的环境变量。
让我们从这个开始:
下载并安装 Perl:下载链接
下载并安装 Python:下载链接
下载并安装Windows SDK(可能不是必需的,但推荐)我使用的是 Windows 8,所以这是我使用的版本:下载链接 ,否则为您的 Windows 找到合适的版本。
下载并安装DirectX SDK (如果你想用OpenGL编译可能需要) 下载链接
下载并解压jom到某个文件夹(对于 linux 不需要)(jom是一个用 VS 并行编译东西的工具,有一种方法可以用nmake做到这一点,但我不熟悉它)下载链接
下载Qt Opensource并解压它,比如说C:\Qt\Qt5.6
,所以现在qtbase
可以在C:\Qt\Qt5.6\qtbase
.
仅适用于 Windows:您真的希望它完全静态吗?
通常,即使您选择静态编译,编译器本身仍然不会静态合并其库。如果您希望编译的源代码相对于编译器(Visual Studio)是完全静态的,则必须在 Qt 的 QMAKE 文件中进行此调整。
转到文件(从你的 Qt 源目录开始),对于高于 2012 的版本,只需在任何地方使用正确的版本(例如 win32-msvc2015):
一种。对于 VS2012: qtbase\mkspecs\win32-msvc2012\qmake.conf
湾。对于 VS2010: qtbase\mkspecs\win32-msvc2010\qmake.conf
C。对于 Qt 5.5.0 及更高版本(任何 VS 版本):qtbase\mkspecs\common\msvc-desktop.conf
并编辑以下行
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+ 有一个 configure 参数-static-runtime
可以为你做这件事。对于新版本的 Qt,您可能不再需要手动执行此操作。
在 linux 中启动终端,或者在 Windows 中启动 Visual Studio 的终端(设置了正确的环境变量,或者使用vcvarsall.bat)。要启动命令提示符并让它自动为您执行此操作,请转到开始,所有程序:
对于 8 之前的 Windows 版本:找到 Microsoft Visual Studio 201x 文件夹,然后启动命令提示符(x86 用于 32 位或 x64 用于 64 位)。
对于 Windows 8:转到“开始”,键入“cmd”,所有可用于命令提示符的版本都会显示出来。选择适当的 Visual Studio 版本(x86 代表 32 位或 x64 代表 64 位)。
以下是它的外观截图。如果存在,则始终倾向于选择“本机”。
9.
对于 VS2012:对 VS2012执行以下命令
set QMAKESPEC=win32-msvc2012
set QTDIR=C:\Qt\Qt5.7\qtbase
set PATH=C:\Qt\Qt5.7\qtbase\bin;%PATH%
注意:QMAKESPEC
对于 Qt 5.8+ 版本,设置环境变量被认为是错误的。不要为新版本这样做。
用于动态链接(需要 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 个不会完全占用所有内核,所以越多越好,但不要太贪心,因为它可能会使您的系统没有响应。
对于 VS2010:对 VS2010执行以下命令
set QMAKESPEC=win32-msvc2010
set QTDIR=C:\Qt\Qt5.7\qtbase
set PATH=C:\Qt\Qt5.7\qtbase\bin;%PATH%
注意:QMAKESPEC
对于 Qt 5.8+ 版本,设置环境变量被认为是错误的。不要为新版本这样做。用于动态链接(需要 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
注意:QMAKESPEC
对于 Qt 5.8+ 版本,设置环境变量被认为是错误的。不要为新版本这样做。
假设您要将编译后的源代码安装到目录/home/username/Qt5.7-install
中。在这种情况下,将以下内容添加到以下任何配置命令中:
-prefix /home/username/Qt5.7-install
警告:不要安装到同一个源目录。那是完全错误的!
如果-prefix
未设置,将选择默认路径,这是/usr/local/
我猜的。我不喜欢使用 root 安装任何东西。我总是喜欢安装在我的用户文件夹中,因此可逆性和升级不是问题。
以下是不同的可能configure
命令,具体取决于您要执行的操作。
用于动态链接(需要 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
现在最后一个命令取决于您要编译的内容。只需键入 ./configure -help
并查看可用的命令行参数是什么。
对于静态链接(需要 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 个不会完全占用所有内核,所以越多越好,但不要太贪心,因为它可能会使您的系统没有响应。
等待 2 个多小时,直到编译完成。
清理!对于 Windows,您可以使用以下命令节省大量空间:C:\Qt\jom\jom.exe clean
对于 linux,使用以下命令:make clean
您可以将编译文件夹的大小从 8 GB 减少到 2.5 GB(用于动态链接)和从 70 GB 减少到 35 GB(用于静态链接)。
为了在 Qt Creator 中使用这个编译版本:
单击“添加”并从 qtbase 中的 bin 所在的文件夹中选择 qmake,因此从上方:
C:\Qt\Qt5.7\qtbase\bin\qmake.exe
(或者对于 Linux 选择您安装已编译 Qt 源的路径,相当于/home/username/Qt5.7-install/qtbase/bin/qmake
本教程中的路径)
现在只需打开一个项目,您会发现它要求您选择您添加的套件。
享受 :)