如何在Windows或Linux下编译Qt 5,32或64位,VS2010,VS2012,VS2013或VS2015 Express或g ++上的静态或dynamic

只是一个post,以帮助那些试图做到这一点,因为我没有博客。

这也适用于Linux。 随意编辑并改进它。

注意:另外还有一篇文章是我在这里用GIT源代码编写的,在Windows上有一个自动脚本 。 你可以修改它的Linux,因为这个post显示的不同。

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

如果您有任何意见或发现错别字,请让我知道,以便我可以修复它们。

首先,是否要编译32位或64位版本并不重要。 唯一的区别是您必须从Visual Studio中select命令提示符快捷方式,它将初始化不同的环境variables。


我们从这开始:

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

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

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

  4. 下载并安装DirectX SDK (如果想用OpenGL编译,可能是必需的) 下载链接

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

  6. 下载Qt Opensource并解压缩到C:\Qt\Qt5.6 ,现在可以在C:\Qt\Qt5.6\qtbasefind文件夹C:\Qt\Qt5.6\qtbase

  7. 仅适用于Windows: 您是否真的希望它完全静止?

    通常,即使您select编译为静态,编译器本身仍然不会静态合并其库。 如果你希望编译后的源代码在编译器(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+有一个configuration参数-static-runtime静态-static-runtime ,将为您做这个。 对于新版本的Qt,您可能不需要手动执行此操作。

  1. 在linux或Windows中启动terminal,启动Visual Studio的terminal(具有正确的环境variables设置,或者使用vcvarsall.bat )。 要启动命令提示符并让它为您自动执行此操作,请转到开始,所有程序:

    对于8之前的Windows版本:findMicrosoft Visual Studio 201x文件夹,然后启动命令提示符(x86为32位或64位为x64)。

    对于Windows 8:转到开始 ,input“cmd”,所有可用于命令提示符的版本都将显示出来。 select适当的Visual Studio版本(x86为32位或x64为64位)。

以下是它可能看起来像一个截图。 总是倾向于select“本机”,如果它存在。

在这里输入图像说明

9。

  • 对于VS2012:对VS2012执行以下命令

      set QMAKESPEC=win32-msvc2012 set QTDIR=C:\Qt\Qt5.7\qtbase set PATH=C:\Qt\Qt5.7\qtbase\bin;%PATH% 

注意:设置QMAKESPEC环境variables在Qt版本5.8+中被认为是错误的。 不要为新版本做。

对于dynamic链接(需要8 GB)

 configure -debug-and-release -opensource -platform win32-msvc2012 -opengl desktop 

对于没有例子的dynamic链接(需要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环境variables被认为是错误的Qt版本5.8 +。 不要为新版本做。 对于dynamic链接(需要8 GB)

 configure -debug-and-release -opensource -platform win32-msvc2010 -opengl desktop 

对于没有例子的dynamic链接(需要2 GB)

 configure -debug-and-release -opensource -platform win32-msvc2010 -opengl desktop -nomake examples -nomake tests 

最后一个命令取决于你想编译的内容。 只要inputconfigure -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有一个小的区别。 在编译之后,build议在linux下安装 。 老实说,这是它没有问题的唯一办法。

为Linux执行以下命令。 不要忘记用你的Qt源码的正确pathreplacepath

  export QMAKESPEC=linux-g++ export QTDIR=/home/username/Qt5.7/qtbase export PATH=/home/username/Qt5.7/qtbase/bin:$PATH 

注意:设置QMAKESPEC环境variables在Qt版本5.8+中被认为是错误的。 不要为新版本做。

假设您要将编译后的源代码安装到目录/home/username/Qt5.7-install 。 在这种情况下,将以下内容添加到以下任何configuration命令中:

 -prefix /home/username/Qt5.7-install 

警告 :不要安装到相同的源目录。 这是错误的!

如果-prefix没有设置,默认path将被select,这是/usr/local/我猜。 我不喜欢使用root来安装任何东西。 我总是喜欢安装在我的用户文件夹,以便可逆性和升级不是一个问题。

以下是不同的可能的configure命令,取决于你想要做什么。

对于dynamic链接(需要8 GB)

 ./configure -debug-and-release -opensource -platform linux-g++ -opengl desktop 

对于没有例子的dynamic链接(需要2 GB)

 ./configure -debug-and-release -opensource -platform linux-g++ -opengl desktop -nomake examples -nomake tests 

现在最后的命令取决于你想编译的内容。 只需input./configure -help ,看看可用的命令行参数是什么。

对于静态链接(需要70 GB,是的,这是疯狂的,更不合理的例子和testing)。

 ./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(用于dynamic链接),从70 GB缩小到35 GB(用于静态链接)。


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

  1. 启动Qt Creator
  2. 转到工具,选项
  3. 从左边的列表中select“生成并运行”。
  4. 转到“Qt版本”选项卡
  5. 点击“添加”,然后从qtbase中的bin文件夹中selectqmake,所以从上面:

    C:\ Qt的\ Qt5.7 \ qtbase \ BIN \ qmake.exe

(或者对于Linux,请select安装编译好的Qt源代码的path,相当于本教程中的/home/username/Qt5.7-install/qtbase/bin/qmake

  1. 点击“应用”
  2. 转到“套件”选项卡
  3. 点击“添加”
  4. 给它一个名字,select合适的编译器(对于VISUAL STUDIO EXPRESS不要select64位的amd64,它将不起作用,请selectx86_amd64 INSTEAD)
  5. 点击OK。

现在只要打开一个项目,你会发现它要求你select你添加的工具包。

请享用 :)