The*_*ist 51 c++ qt compilation visual-studio-2010 visual-studio-2012
只是一个帖子来帮助那些尝试这样做的人,因为我没有博客.
这也适用于linux.随意编辑并改进它.
The*_*ist 90
注意:我还写了另一篇文章,从GIT源代码编写,在Windows 上使用自动脚本编写.您可以为Linux修改它,因为这篇文章中显示了差异.
本文不断更新.如果这对你有帮助,请给它一个"竖起大拇指",这样我才能知道它在帮助人们而不是无用.
如果您有任何意见或发现错别字,请告诉我,以便我可以解决它们.
首先,是否要编译32位或64位版本并不重要.唯一的区别是您必须从Visual Studio中选择的命令提示符快捷方式,它将初始化不同的环境变量.
让我们从这开始:
下载并安装Perl:下载链接
下载并安装Python:下载链接
下载并安装Windows SDK(可能没有必要,但推荐)我使用Windows 8,所以这是我使用的版本:下载链接 ,否则找到适合您的Windows的版本.
下载并安装DirectX SDK(如果您想使用OpenGL编译,可能是必需的) 下载链接
下载并解压jom到某个文件夹(Linux不需要)(jom是一个用于并行编译VS的工具,有一种方法可以用nmake做这个,但我不熟悉它)下载链接
下载Qt Opensource,并提取它,说C:\Qt\Qt5.6
,现在qtbase
可以找到该文件夹C:\Qt\Qt5.6\qtbase
.
仅适用于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
Run Code Online (Sandbox Code Playgroud)
至
QMAKE_CFLAGS_RELEASE = -O2 -MT
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
QMAKE_CFLAGS_DEBUG = -Zi -MTd
Run Code Online (Sandbox Code Playgroud)注意:Qt 5.6+有一个配置参数-static-runtime
,可以为您执行此操作.对于新版本的Qt,您可能不需要再手动执行此操作.
在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%
Run Code Online (Sandbox Code Playgroud)注意:QMAKESPEC
对于Qt版本5.8+,设置环境变量被认为是错误的.不要为新版本执行此操作.
用于动态链接(需要8 GB)
configure -debug-and-release -opensource -platform win32-msvc2012 -opengl desktop
Run Code Online (Sandbox Code Playgroud)
没有示例的动态链接(需要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.
Run Code Online (Sandbox Code Playgroud)
对于静态链接(需要70 GB,是的,这很疯狂,不做示例和演示更合理).
configure -debug-and-release -opensource -platform win32-msvc2012 -opengl desktop -static
Run Code Online (Sandbox Code Playgroud)
对于没有示例的静态链接(需要4 GB,更有意义).
configure -debug-and-release -opensource -platform win32-msvc2012 -opengl desktop -static -nomake examples -nomake tests
Run Code Online (Sandbox Code Playgroud)
现在这将需要一两分钟,然后使用如下的jom(假设它是在C:\ Qt\jom中提取的):
C:\Qt\jom\jom.exe -j 50
Run Code Online (Sandbox Code Playgroud)
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%
Run Code Online (Sandbox Code Playgroud)注意:QMAKESPEC
对于Qt版本5.8+,设置环境变量被认为是错误的.不要为新版本执行此操作.用于动态链接(需要8 GB)
configure -debug-and-release -opensource -platform win32-msvc2010 -opengl desktop
Run Code Online (Sandbox Code Playgroud)
没有示例的动态链接(需要2 GB)
configure -debug-and-release -opensource -platform win32-msvc2010 -opengl desktop -nomake examples -nomake tests
Run Code Online (Sandbox Code Playgroud)
最后一个命令取决于您要编译的内容.只需键入configure -help并查看可用的命令行参数.对于静态链接(需要70 GB,是的,这很疯狂,不做示例和演示更合理).
configure -debug-and-release -opensource -platform win32-msvc2010 -opengl desktop -static
Run Code Online (Sandbox Code Playgroud)
对于没有示例的静态链接(需要4 GB,更有意义).
configure -debug-and-release -opensource -platform win32-msvc2010 -opengl desktop -static -nomake examples -nomake tests
Run Code Online (Sandbox Code Playgroud)
现在这将需要一两分钟,然后使用如下的jom(假设它是在C:\ Qt\jom中提取的):
C:\Qt\jom\jom.exe -j 50
Run Code Online (Sandbox Code Playgroud)
50表示您要使用的核心数.我使用50,因为我有8个线程,只使用8个不会完全占用所有核心,所以越多越好,但不要太贪心,因为它可能会使你的系统没有响应.
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
Run Code Online (Sandbox Code Playgroud)
注意:QMAKESPEC
对于Qt版本5.8+,设置环境变量被认为是错误的.不要为新版本执行此操作.
假设您要将已编译的源安装到目录中/home/username/Qt5.7-install
.在这种情况下,请将以下内容添加到以下任何配置命令中:
-prefix /home/username/Qt5.7-install
Run Code Online (Sandbox Code Playgroud)
警告:请勿安装到同一源目录.那是完全错的!
如果-prefix
未设置,将选择默认路径,这是/usr/local/
我猜的.我不喜欢用root安装任何东西.我总是喜欢在我的用户文件夹中安装,因此可逆性和升级不是问题.
以下是不同的可能configure
命令,具体取决于您要执行的操作.
用于动态链接(需要8 GB)
./configure -debug-and-release -opensource -platform linux-g++ -opengl desktop
Run Code Online (Sandbox Code Playgroud)
没有示例的动态链接(需要2 GB)
./configure -debug-and-release -opensource -platform linux-g++ -opengl desktop -nomake examples -nomake tests
Run Code Online (Sandbox Code Playgroud)
现在最后一个命令取决于你想要编译的内容.只需键入 ./configure -help
并查看可用的命令行参数.
对于静态链接(需要70 GB,是的,它很疯狂,不做示例和测试更合理).
./configure -debug-and-release -opensource -platform linux-g++ -opengl desktop -static
Run Code Online (Sandbox Code Playgroud)
对于没有示例的静态链接(需要4 GB,更有意义).
./configure -debug-and-release -opensource -platform linux-g++ -opengl desktop -static -nomake examples -nomake tests
Run Code Online (Sandbox Code Playgroud)
完成后,运行make命令
make -j 50
Run Code Online (Sandbox Code Playgroud)
50表示您要使用的核心数.我使用50,因为我有8个线程,只使用8个不会完全占用所有核心,所以越多越好,但不要太贪心,因为它可能会使你的系统没有响应.
等待2个多小时,直到编译完成.
清理!你可以使用这个命令为Windows节省大量空间:C:\Qt\jom\jom.exe clean
这个命令用于linux:make clean
您可以将已编译文件夹的大小从8 GB减少到2.5 GB(用于动态链接),从70 GB减少到35 GB(用于静态链接).
为了在Qt Creator中使用这个编译版本:
单击"添加"并从qtbase中bin所在的文件夹中选择qmake,所以从上面:
C:\ Qt的\ Qt5.7\qtbase\BIN\qmake.exe
(或者Linux用于选择安装已编译Qt源的路径,这与/home/username/Qt5.7-install/qtbase/bin/qmake
本教程中的内容相同)
现在只需打开一个项目,你会发现它要求你选择你添加的工具包.
请享用 :)
归档时间: |
|
查看次数: |
47203 次 |
最近记录: |