使用Visual Studio 2012/Visual Studio 2013构建Qt5,并与IDE集成

Mir*_*ate 50 c++ directx-11 qt5 visual-studio-2012 visual-studio-2013

如何让Qt5下载并与Visual Studio 2012集成?您将遇到哪些问题,以及如何解决这些问题?

更新重新.Visual Studio 2013

Visual Studio 2013也报告了成功,并且正在为VS 2013维护这些注释.

还要注意的是这个问题的重点是坚决的只是建筑物的Qt与Visual Studio.还有关于与Visual Studio IDE集成的说明

Mir*_*ate 77

此方法经过测试可在Visual Studio 2013上运行.此处提供使用Visual Studio 2012和2013的预构建二进制文件,包括OpenGL版本.

第1步:安装程序

  1. 在此处下载并安装RapidEE .RapidEE是一个Windows环境变量编辑器.它对于此过程的其余部分(一般而言)非常有用.

  2. 安装DirectX 11 SDK.它现在是Windows 8 SDK的一部分,因此您首先必须安装DirectX 10 SDK,您可以在此处获取(但请参阅下一句中的警告).如果您安装了Visual C++ 2010 Redistributable Package,并且您可能(它与VS 2010一起自动安装),请按照此处概述的步骤来协助安装DirectX 10.安装DirectX 10 SDK后,请在此处下载并安装Windows 8 SDK ,其中包含DirectX 11 SDK. 是的,这很痛苦,但除非您知道自己拥有DirectX 11 SDK,否则Qt构建将失败.

  3. Python.orgAnaconda Python安装Python for Windows(我听说过2.6+,使用3.3).

  4. ActiveState安装Perl for Windows .


第2步:Git(和建立)Qt5(是的,这意味着Git)

  1. 在qt-project网站上按照Windows安装指南进行操作.

    摘要

    要总结上述链接和以下注释中的详细信息(如果您有任何错误,请查看以下注释;它们可能会得到回答):

    • 卸载Avast(如果已安装)以避免构建错误.是的,字面意思是卸载它.从系统中100%删除它. 停用它将无法正常工作.请参阅以下详细说明.

    • 注意第一步:不要在git下面的第一次使用SmartGit (除非你真的知道你在做什么),因为SmartGit的默认设置会拉动所有东西,而这不是你想要的.

    • 必须安装Git for Windows.

    • 确定要将Qt安装放在何处,以及cd从任何命令提示符窗口中包含新安装的目录.(因为这个过程非常脆弱且容易出错,我个人直接介绍过C:,但这可能没有必要).

    • 从上面的目录中,执行:

      git clone git://gitorious.org/qt/qt5.git qt5

      这很快.一旦完成,你应该在'稳定'分支上,但是你总是可以git checkout stablecd进入新创建的qt5目录后运行,只是为了确定.使用git checkout 5.4.1已确认可与64位VS2013配合使用.

    • 在继续执行下一步之前,请关闭当前的命令提示符窗口(如果它不是Visual Studio命令提示符窗口).这是为了确保您在后续步骤中使用Visual Studio命令提示符窗口.

    • 接下来运行32位(x86)或64位VS Tools命令提示符(取决于您是将Qt5构建为32位还是64位).要访问它,你必须通过"开始"菜单找到它 - 转到Program Files- > [Microsoft] Visual Studio 2012/2013- > Visual Studio Tools,你会看到它有一个有趣的名字; 名称应包括短语Native Tools; x86名称中将包含32位版本,名称中将包含64位版本x64.

    • cdqt5从上面的步骤进入新创建的目录.

    • 在Visual Studio命令提示符下,必须下载Qt子模块的其余部分:

      perl ./init-repository --no-webkit

      执行此步骤需要一段时间,因为它必须下载很多,但它在一个体面的连接上并不太可怕.

    • 然后下载任何init-repository未下载的OPTIONAL子模块- SmartGit仅在此阶段开始运行良好(参见下面的评论).

    • 完成Qt的下载后,以下命令准备构建环境(它也应该使用[32 | 64] VS Native Tools命令提示符执行):

      configure -developer-build -opensource -confirm-license -mp -nomake examples -nomake tests -debug-and-release -c++11 -no-warnings-are-errors -platform win32-msvc2012.

      关于此命令行的注意事项:c++11VS2012编译器可能不需要该选项,但可以使用VS2013; -no-warnings-are-errors如果你在64位自动构建的ANGLE上出错,这是必要的; -platform自动设置为win32-msvc2012,因此默认情况下使用Qt的32位版本,并且可能不需要在命令行提供-platform(即使安装了以前版本的VS,也可以使用).对于VS2013,请使用-platform win32-msvc2013.

      执行此步骤需要几分钟,但并不是那么糟糕.

    • 最后,在系统上实际构建Qt的命令(也在VS Native Tools命令提示符下运行)只是:

      nmake

      期待等待数小时才能完成构建. 如果您指定了一个输出文件夹-prefix(参见下面的注释),那么请使用nmake install,否则就是这样.


笔记:

一般注意事项

如果您对上面链接的文档感到困惑,只需使用ANGLE库(默认情况下)而不是OpenGL,这就是您必须安装DirectX 11的原因.

请确保您使用VS自带工具命令提示符运行从上面的链接的所有命令(即perl .\init-repository --no-webkit,configurenmake).您将使用[32 | 64]位命令提示符(x86x64),具体取决于您是将Qt构建为32位还是64位.如果在命令提示符打开的情况下安装perl(确保它在其中PATH),则需要重新启动perl的命令提示符以将其识别为命令.

当运行"init-repository"时(从上面的链接中的步骤),文档中不清楚,但你必须通过执行此操作perl; 即perl ./init-repository --no-webkit.在configurenmake命令,但是,直接调用.

传递给configure它的一个非常有用的选项是-mp,它导致Qt并行构建在多个核心上,大大加快了(长)构建时间.

要指定输出文件夹,请添加-prefix [outfolder]configure命令.例如,-prefix %CD%\output\x64\vc12对于64位Visual Studio 2013(12.0)版本,use 将是一个合适的输出(子)文件夹.


Unicode支持(ICU)

如果您需要Unicode支持(通过ICU),请特别注意上面链接中提到的说明.总之,ICU必须在VS 2012中从零开始构建,因为Windows中唯一的预构建ICU二进制文件适用于VS 2010.在VS 2012中构建是无痛的 - 只需在<icuroot>\icu\source中找到ICU解决方案(.sln)\allinone,并在Debug和Release模式下构建(在32位或64位模式下,取决于你正在构建Qt的模式 - 不要在其他位置构建,因为ICU将覆盖输出文件夹二进制文件).(Qt构建过程将正确定位ICU的调试与发布版本.)它应该构建没有错误.然后,将<icuroot>\lib的路径添加为名为"LIB"的(可能)新Windows环境变量中的字符串条目(您可以使用Rapid EE;在RapidEE中将LIB设置为"可扩展字符串",即使只有1条目),并将<icuroot>\include的路径添加为名为"INCLUDE"的(可能)新Windows环境变量中的字符串条目.(注意:将这些路径添加到PATH变量将不起作用.)构建Qt后,您可以删除刚刚添加的所有这些条目.另外,请将ICU dll(<icuroot>\bin)的运行时路径添加到环境的PATH变量,或者Qt构建过程(特别是uic.exe运行时)会产生欺骗性和误导性错误.最后,在configure命令行(下面)中,确保添加-icu为附加的命令行参数.

ICU失败:

目前,当ICU启用时,VS2012编译器似乎存在构建Qt5的错误.具体来说,qtbase\src\corelib\codecs\qtextcodec.cpp第688行(Qt5 v5.02)无法返回编解码器名称"US-ASCII"的编解码器(编解码器为NULL),导致"lrelease.exe"在以后尝试取消引用编解码器时崩溃(我丢失了轨道)该文件/行号,但它是NULL codec变量的明显解除引用).不幸的是,这意味着据我所知,WebKit无法使用VS2012编译器构建(至少是)32位Qt5版本,因为WebKit需要ICU.

如果有人能够使用启用了ICU的VS2012编译器构建Qt5,请更新此Wiki说明.

ICU澄清:

如果您的路径中有ICU,Qt将自动构建它.换句话说,标志" -icu"是隐含的.但是,如上所述,这会导致"lrelease.exe"出错.所以解决这个问题的方法是在configure命令中添加标志-no-icu


其他子模块

如果除了默认子模块之外还需要子模块,则可以完成init-repository命令使用SmartGit(或命令行).SmartGit可能最简单,因为您不需要将路径复制到命令行,但可以直接使用用户界面.

警告:不要下载可选的qlalrSUBMODULE,因为它不会与整个Qt构建结合使用,对于Qt的用户来说不是必需的,但仅用于内部Qt开发.

警告:perl .\init-repository --no-webkit必须使用shell命令行(不是SmartGit); 这些步骤只会下载默认的Qt子模块.您不能使用SmartGit来克隆和下载Git文件,git://gitorious.org/qt/qt5.git因为SmartGit当前不能正确处理子模块.相反,打开一个标准的Windows shell命令提示符(使用任何命令提示符应用程序,不一定是VS Tools命令提示符),并且(假设Git已正确安装在系统上; SmartGit安装可能会也可能不会自动执行此操作;如果是没有,转到Git for Windows并直接安装)git clone git://gitorious.org/qt/qt5.git直接从命令行输入; 也许跟着git checkout stable(我不确定这个分支是否默认签出); 然后使用命令行perl .\init-repository --no-webkit关闭它以下拉DEFAULT存储库(WebKit除外,它需要ICU和ICU似乎无法在VS2012的32位Qt5中构建;请参阅注释).

因此,下载所有必需的Qt源文件的步骤是:1.使用Windows命令行执行初始化git clone git://gitorious.org/qt/qt5.git; 2. perl .\init-repository --no-webkit从VS Tools 2012命令提示符中执行; 然后可选3.使用SmartGit(从上面的链接)(或等效)来"打开现有项目"(选择Qt5根文件夹)并从SmartGit中执行拉取以下载任何非默认存储库(但不要下载qlalr) .而已; 您拥有系统上所有必需和可选的Qt文件(包括子模块).

如果有人发现其他可选的子模块无法构建和/或仅供内部使用(除此之外qlalr),请更新此Wiki以指定它们.

通常,通过获得的默认子模块perl .\init-repository --no-webkit就足够了.如果您知道或稍后发现其他(非默认)模块,您可以随时添加它们.


一般问题

如果在某些时候您收到错误,指出无法识别命令"python"(或任何类似的东西),只需检查包含python.exe(或相应.exe)的文件夹是否为路径变量的一部分.如果不是,请添加它(为方便起见,使用上面提到的RapidEE)并再次尝试您正在做的事情.如果存在,请确保在将路径添加到命令后重新启动命令提示符.

另外两个与路径相关的问题很重要(引自与上面链接相关的文档):" 确保在msysgit提供的perl可执行文件之前的路径中找到perl可执行文件,因为后者已过时 "; 并且" 如果sh.exe在你的PATH中你可能无法构建(例如由于git或msys安装).这样的错误由qt5-srcqtbasebinqmake.exe指示:命令未找到且相似.在这种情况下,确保sh.exe不在您的路径中.如果您的安装已经配置,则必须重新配置. "

在此过程中,您可能会nmake在文件上遇到错误.如果这样做,只需进入该目录并强制构建问题文件.然后nmake再次在Qt5上开始该过程.


具体问题

警告:您可能需要在Qt 过程中禁用防病毒软件和SANDBOXINGnmake(并且,为了安全起见,在整个过程中).在内部,Qt执行许多防病毒程序可以干扰的可执行文件(有时是静默的).特别是,如果您有任何沙盒软件,请务必禁用沙盒.

警告: AVAST!Sandbox用户:Avast Sandbox有一个错误,即使您禁用Avast的自动沙箱,沙盒也不会关闭,它将rcc在Qt的构建过程中静默地沙箱化由Qt 程序自动创建的所有资源文件.对于已安装Avast自动进行器功能的任何用户而言,Qt构建始终失败,即使已关闭自动待机功能.克服这个问题的唯一方法是完全卸载AVAST!在建立Qt之前从你的系统.你可以重新安装Avast!Qt构建完成后.


Qt5的编译可能需要很长时间(小时,即使使用-mp多线程选项).忍耐.


第3步:将Qt5与Visual Studio 2012集成

  1. 下载并安装Visual Studio Qt5插件.它位于页面底部附近的"其他下载"部分,不适用于Visual Studio Express.

  2. 打开Visual Studio 2012,然后转到Qt Options(它位于顶部菜单栏上的"Qt5"下).

  3. 在Qt Versions选项卡中,检查Qt5是否已经存在.如果不是,请单击"添加",选择版本名称(可能是名称,如5.xx),然后导航到包含qmake.exe(通常C:\Qt\qt5\qtbase)的文件夹.

  4. 退出Qt选项对话框.

  5. 创建一个新的Visual Studio项目.当您看到"新建项目"对话框时,您应该看到" Qt5 Projects模板"选项.

  6. 获得新的Qt项目后,右键单击它并选择"转换为QMake生成的项目".构建项目,然后再次右键单击它并选择"将项目转换为Qt加载项项目".再次构建,然后运行.你现在应该有一个有效的Qt项目.


将Qt5添加到现有的Visual Studio 2012 VC++项目中

本节可能适用于您,也可能不适合您.如果您遇到问题或有其他/更好的解决方案,请发表评论或编辑相应的步骤.

  1. 在VS中右键单击您的项目,然后选择"卸载项目".再次右键单击该项目,然后选择"编辑[项目名称] .vcxproj".这将打开项目文件,以便您可以添加Qt5.

  2. 转到Global PropertyGroup,添加或更改<Keyword>为Qt4VSv1.0.

  3. 重新加载项目,然后右键单击并选择"将项目转换为Qt加载项项目"

  4. 等待转换完成(不需要超过几秒钟),然后选择Qt5>Project Settings.转到模块选项卡,并检查模块,你想你的项目依赖于(基本的有Core,WidgetsGUI).

  5. 按照此处的步骤操作,添加目录$(QTDIR)\include.


    笔记:

    如果您在任何时候包含windows.h,您需要在此#define NOMINMAX 之前防止与之发生冲突qdatetime.h.

    完成上述步骤后,您可以通过选择使Qt Creator使您的项目可用Qt5>Create basic .pro file.


最后的注意事项:如果您有与本指南中包含的信息相关的问题,请将其作为新问题发布(此处不是答案),并且可能会添加答案或答案的链接.


Ron*_*sse 10

我成功地将Qt 5.0.2与Visual Studio 2012集成在Windows 7上,基于上面的优秀wiki以及此qt-project链接.由于我以略微不同的方式做了一些步骤,我认为将它发布在这里是有效的:

下面的顺序应该按照给定的顺序执行:

0 - 卸载Avast(如果已安装)以避免构建错误.由于Avast错误,停用它将无法正常工作;

1 - 安装Git(> = 1.6.x);

2 - 安装Python(> = 2.6.x).[python.org];

3 - 安装Perl(> = 5.14).[activestate.com];

4 - 安装Ruby.[rubyinstaller.org];

5 - 打开Windows 7命令提示符(现在不要使用VS2012 Developer命令提示符);

6 - 为qt5选择任何目录,关于所选路径的NO空间.我决定使用路径"C:\ qt5";

7 - 返回Windows 7命令提示符(在我的例子中,提示"C:\ qt5>")类型:

git clone git://gitorious.org/qt/qt5.git qt5
Run Code Online (Sandbox Code Playgroud)

8 - 查看稳定版本:

cd qt5
git checkout stable
Run Code Online (Sandbox Code Playgroud)

9 - 您可能会收到一条消息,确认此版本已经稳定.关闭命令提示符;

10 - 打开Visual Studio的开发人员控制台(所有程序> Visual Studio 2012> Visual Studio工具> VS2012的开发人员命令提示符)并将当前目录更改为您选择的目录(在我的示例中为"C:\ qt5");

11 - 下载Qt子模块,忽略webkit(构建错误的常见来源......):

perl .\init-repository --no-webkit
Run Code Online (Sandbox Code Playgroud)

12 - 现在输入这个巨大的命令来正确配置你的构建:

configure -developer-build -opensource -nomake examples -nomake tests -nomake demos -debug-and-release -c++11 -mp -nomake webkit -confirm-license
Run Code Online (Sandbox Code Playgroud)

13 -接下来,确保模块qlalr建.为此,请打开Windows资源管理器并导航到您选择的Qt目录(在我的示例中为" C:\ qt5 ")并检查文件夹qlalr是否存在.如果是,请删除它;

14 - 构建时间......可能的构建错误将来自辅助模块(例如webkit),它们不会影响主要的Qt功能(webkit本身应该不是问题,因为我们之前已经将配置设置为不构建它).然后我们可以忽略它们并保持构建在独立模块上运行:

nmake /I /K
Run Code Online (Sandbox Code Playgroud)

15 - 要完成集成,请按照上面社区wiki的步骤3("步骤3:将Qt5与Visual Studio 2012集成").


Bea*_*ker 6

只是想提一下,在http://qt-project.org/downloads上有一个针对Visual Studio 2012的Qt 5.2预构建版本.因此,如果您对从源代码构建Qt 5没有特殊兴趣,您也可以使用预构建二进制文件.

Tver-Soft网站上还提供了几种用于不同编译器版本的预编译(x64)二进制文件.


归档时间:

查看次数:

67393 次

最近记录:

7 年,6 月 前