如何在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。
我们从这开始:
-
下载并安装Perl: 下载链接
-
下载并安装Python: 下载链接
-
下载并安装Windows SDK (可能不必要,但推荐)我使用Windows 8,所以这是我使用的版本: 下载链接 ,否则find适合您的Windows版本。
-
下载并安装DirectX SDK (如果想用OpenGL编译,可能是必需的) 下载链接
-
下载并提取jom到一些文件夹(linux不需要)( jom是一个用VS并行编译东西的工具,有一种方法可以用nmake做到这一点,但我不熟悉它) 下载链接
-
下载Qt Opensource并解压缩到
C:\Qt\Qt5.6
,现在可以在C:\Qt\Qt5.6\qtbase
find文件夹C:\Qt\Qt5.6\qtbase
。 -
仅适用于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,您可能不需要手动执行此操作。
-
在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个不会完全占用所有核心,所以越多越好,但不要太贪婪,因为它可能会使系统不响应。
-
等待2+小时,直到编译完成。
-
清理! 你可以使用这个命令为Windows节省很多空间:
C:\Qt\jom\jom.exe clean
然后这个命令为linux:make clean
您可以将编译文件夹的大小从8 GB缩小到2.5 GB(用于dynamic链接),从70 GB缩小到35 GB(用于静态链接)。
为了在Qt Creator中使用这个编译版本:
- 启动Qt Creator
- 转到工具,选项
- 从左边的列表中select“生成并运行”。
- 转到“Qt版本”选项卡
-
点击“添加”,然后从qtbase中的bin文件夹中selectqmake,所以从上面:
C:\ Qt的\ Qt5.7 \ qtbase \ BIN \ qmake.exe
(或者对于Linux,请select安装编译好的Qt源代码的path,相当于本教程中的/home/username/Qt5.7-install/qtbase/bin/qmake
)
- 点击“应用”
- 转到“套件”选项卡
- 点击“添加”
- 给它一个名字,select合适的编译器(对于VISUAL STUDIO EXPRESS不要select64位的amd64,它将不起作用,请selectx86_amd64 INSTEAD)
- 点击OK。
现在只要打开一个项目,你会发现它要求你select你添加的工具包。
请享用 :)