繁体   English   中英

如何在Windows或Linux,32或64位,Visual Studio或g ++上的静态或动态版本下编译Qt 5

[英]How to compile Qt 5 under Windows or Linux, 32 or 64 bit, static or dynamic on Visual Studio or g++

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

这也适用于linux。 随时对其进行编辑和改进。

注意:我还写了另一篇文章,使用 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开源 ,并提取它,说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

    • b。 对于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+具有一个配置参数-static-runtime ,它将为您完成此操作。 对于新版本的Qt,您可能不再需要手动执行此操作。

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

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

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

以下是其外观的屏幕截图。 如果存在,请始终选择“本地”。

在此处输入图片说明

9。

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

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

注意:对于Qt 5.8+版本,设置QMAKESPEC环境变量被认为是错误的。 不要为新版本执行此操作。

用于动态链接(需要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% 

注意:对于Qt 5.8+版本,设置QMAKESPEC环境变量被认为是错误的。 不要为新版本执行此操作。 用于动态链接(需要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

注意:对于Qt 5.8+版本,设置QMAKESPEC环境变量被认为是错误的。 不要为新版本执行此操作。

假设您要将编译后的源代码安装到目录/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. 从左侧列表中选择“生成并运行”。
  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,请不要为64位选择amd64,否则将无法工作,请选择x86_amd64 INSTEAD)
  5. 单击确定。

现在打开一个项目,您会发现它要求您选择添加的工具包。

请享用 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM