56

只是一个帖子来帮助那些试图这样做的人,因为我没有博客。

这也适用于linux。随意编辑和改进它。

4

1 回答 1

98

注意:我还写了另一篇文章,用Windows 上的自动脚本从 GIT 源代码编译。您可以为 Linux 修改它,因为差异显示在这篇文章中。

本文不断更新。如果这对您有帮助,请给它“竖起大拇指”,这样我就可以知道它是在帮助人们而不是无用。

如果您有任何意见或发现拼写错误,请告诉我,以便我改正。

首先,无论您要编译 32 位还是 64 位版本都没有关系。唯一的区别是您必须从 Visual Studio 中选择的命令提示符快捷方式,它将初始化不同的环境变量。


让我们从这个开始:

  1. 下载并安装 Perl:下载链接

  2. 下载并安装 Python:下载链接

  3. 下载并安装Windows SDK(可能不是必需的,但推荐)我使用的是 Windows 8,所以这是我使用的版本:下载链接 ,否则为您的 Windows 找到合适的版本。

  4. 下载并安装DirectX SDK (如果你想用OpenGL编译可能需要) 下载链接

  5. 下载并解压jom到某个文件夹(对于 linux 不需要)(jom是一个用 VS 并行编译东西的工具,有一种方法可以用nmake做到这一点,但我不熟悉它)下载链接

  6. 下载Qt Opensource并解压它,比如说C:\Qt\Qt5.6,所以现在qtbase可以在C:\Qt\Qt5.6\qtbase.

  7. 仅适用于 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,您可能不再需要手动执行此操作。

  1. 在 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:

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 个不会完全占用所有内核,所以越多越好,但不要太贪心,因为它可能会使您的系统没有响应。

  1. 等待 2 个多小时,直到编译完成。

  2. 清理!对于 Windows,您可以使用以下命令节省大量空间:C:\Qt\jom\jom.exe clean 对于 linux,使用以下命令:make clean

您可以将编译文件夹的大小从 8 GB 减少到 2.5 GB(用于动态链接)和从 70 GB 减少到 35 GB(用于静态链接)。


为了在 Qt Creator 中使用这个编译版本:

  1. 启动 Qt Creator
  2. 转到工具,选项
  3. 从左侧的列表中选择 Build and Run。
  4. 转到“Qt 版本”选项卡
  5. 单击“添加”并从 qtbase 中的 bin 所在的文件夹中选择 qmake,因此从上方:

    C:\Qt\Qt5.7\qtbase\bin\qmake.exe

(或者对于 Linux 选择您安装已编译 Qt 源的路径,相当于/home/username/Qt5.7-install/qtbase/bin/qmake本教程中的路径)

  1. 点击“申请”
  2. 转到“套件”选项卡
  3. 点击“添加”
  4. 给它一个名字,选择合适的编译器(对于 VISUAL STUDIO EXPRESS,不要选择 amd64 FOR 64-BIT ,它不会工作,选择 x86_amd64 INSTEAD)
  5. 单击确定。

现在只需打开一个项目,您会发现它要求您选择您添加的套件。

享受 :)

于 2013-02-18T08:41:29.997 回答