Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在Windows或Linux、32位或64位、Visual Studio或g+上静态或动态编译Qt 5+;_C++_Visual Studio 2010_Qt_Compilation_Visual Studio 2012 - Fatal编程技术网

C++ 如何在Windows或Linux、32位或64位、Visual Studio或g+上静态或动态编译Qt 5+;

C++ 如何在Windows或Linux、32位或64位、Visual Studio或g+上静态或动态编译Qt 5+;,c++,visual-studio-2010,qt,compilation,visual-studio-2012,C++,Visual Studio 2010,Qt,Compilation,Visual Studio 2012,因为我没有博客,所以只是一篇帮助那些想这么做的人的帖子 这也适用于linux。请随意编辑和改进。注意:我在Windows上还写了另一篇文章。您可以为Linux修改它,因为区别在本文中显示 这篇文章正在不断更新。如果这对你有帮助,请竖起大拇指,让我知道这是在帮助别人,而不是毫无用处 如果您有任何意见或发现拼写错误,请让我知道,以便我可以修复它们 首先,编译32位还是64位版本并不重要。唯一的区别是必须从VisualStudio中选择命令提示符快捷方式,它将初始化不同的环境变量 让我们从这个开始:

因为我没有博客,所以只是一篇帮助那些想这么做的人的帖子


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

注意:我在Windows上还写了另一篇文章。您可以为Linux修改它,因为区别在本文中显示

这篇文章正在不断更新。如果这对你有帮助,请竖起大拇指,让我知道这是在帮助别人,而不是毫无用处

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

首先,编译32位还是64位版本并不重要。唯一的区别是必须从VisualStudio中选择命令提示符快捷方式,它将初始化不同的环境变量


让我们从这个开始:

  • 下载并安装Perl:

  • 下载并安装Python:

  • 下载并安装Windows SDK(可能不需要,但建议使用) 我使用Windows 8,因此这是我使用的版本: ,否则,请查找适用于Windows的正确版本

  • 下载并安装DirectX SDK(如果您想使用OpenGL编译,可能需要)

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

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

  • 仅适用于Windows:您真的希望它完全静态吗?

    通常,即使选择静态编译,编译器本身也不会静态合并其库。如果希望编译后的源代码相对于编译器(VisualStudio)是完全静态的,则必须在Qt的QMAKE文件中进行此调整

    转到文件(从您的Qt源目录开始),对于高于2012的版本,只需在任何地方使用正确的版本(如win32-msvc2015)

    • a对于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
    

  • 注意:Qt 5.6+有一个配置参数
    -static runtime
    ,可以为您完成此操作。对于新版本的Qt,您可能不再需要手动执行此操作

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

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

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

  • 下面是它的屏幕截图。始终倾向于选择“本机”(如果存在)

    九,

    • 对于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 GBs)

    用于无示例的动态链接(需要2 GB)

    对于静态链接(需要70 GB,是的,这太疯狂了,不制作示例和演示更合理)

    对于没有示例的静态链接(需要4 GB,更有意义)

    现在需要一两分钟,然后按如下方式使用jom(假设它是在C:\Qt\jom中提取的):

    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 GBs)

    用于无示例的动态链接(需要2 GB)

    最后一个命令取决于要编译的内容。只需键入configure-help并查看可用的命令行参数。 对于静态链接(需要70 GB,是的,这太疯狂了,不制作示例和演示更合理)

    对于没有示例的静态链接(需要4 GB,更有意义)

    现在需要一两分钟,然后按如下方式使用jom(假设它是在C:\Qt\jom中提取的):

    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
    环境变量被认为是错误的。不要在新版本中这样做

    假设您想安装t
    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.
    
    configure -debug-and-release -opensource -platform win32-msvc2012 -opengl desktop -static
    
    configure -debug-and-release -opensource -platform win32-msvc2012 -opengl desktop -static -nomake examples -nomake tests
    
    C:\Qt\jom\jom.exe -j 50
    
    set QMAKESPEC=win32-msvc2010
    set QTDIR=C:\Qt\Qt5.7\qtbase
    set PATH=C:\Qt\Qt5.7\qtbase\bin;%PATH%
    
    configure -debug-and-release -opensource -platform win32-msvc2010 -opengl desktop
    
    configure -debug-and-release -opensource -platform win32-msvc2010 -opengl desktop -nomake examples -nomake tests
    
    configure -debug-and-release -opensource -platform win32-msvc2010 -opengl desktop -static
    
    configure -debug-and-release -opensource -platform win32-msvc2010 -opengl desktop -static -nomake examples -nomake tests
    
    C:\Qt\jom\jom.exe -j 50
    
        export QMAKESPEC=linux-g++
        export QTDIR=/home/username/Qt5.7/qtbase
        export PATH=/home/username/Qt5.7/qtbase/bin:$PATH
    
    -prefix /home/username/Qt5.7-install
    
    ./configure -debug-and-release -opensource -platform linux-g++ -opengl desktop
    
    ./configure -debug-and-release -opensource -platform linux-g++ -opengl desktop -nomake examples -nomake tests
    
    ./configure -debug-and-release -opensource -platform linux-g++ -opengl desktop -static
    
    ./configure -debug-and-release -opensource -platform linux-g++ -opengl desktop -static -nomake examples -nomake tests
    
    make -j 50