如何将常规win32(VC ++ vcproj)项目转换为Qt项目?

时间:2010-01-18 18:36:07

标签: visual-studio qt projects-and-solutions

如何将现有的vcproj文件转换为Visual Studio的QT加载项识别并视为有效Qt项目的项目文件?

我应该咬紧牙关并创建新项目来替换旧项目,然后添加现有代码吗?

我正在使用QT 4.6和VS 2008与Qt Add-in 1.1.2。 原始vcproj文件已使用QMake生成 NOT

5 个答案:

答案 0 :(得分:29)

使用Visual Studio 2010+,现在可以使用Qt Addin的“将项目转换为Qt加载项目”功能将项目转换为Qt Addin项目。

以下步骤来自错误QTVSADDINBUG-27中的work around。这是使用Visual Studio 2010测试的,但应该与新版本类似:

  1. 在“解决方案资源管理器”中右键单击您的项目,单击“卸载项目”
  2. 在“解决方案资源管理器”中右键单击您的项目,单击“编辑.vcxproj”
  3. 在代码<Keyword>Qt4VSv1.0</Keyword><PropertyGroup Label="Globals">之间添加行</PropertyGroup>
  4. 在“解决方案资源管理器”中右键单击您的项目,单击“重新加载项目”
  5. 在“解决方案资源管理器”中右键单击您的项目,单击“将项目转换为Qt加载项目”
  6. 如果您的项目中有头文件,则必须按照此answer中的说明触发“生成的文件”文件夹中的moc_ *文件生成。

    对于早于2010年的Visual Studio版本,请参阅此work around

答案 1 :(得分:8)

以下是诺基亚支持工程师的回复,其名称已删除以保护隐私:

  

您好,

     

感谢您的建议。我有   将它传递给我们的开发人员   将考虑实施它   未来发布。您可以使用跟踪它   以下链接:

     

https://bugreports.qt.io/browse/QTVSADDINBUG-27

     

此致   支持工程师,Qt开发框架,诺基亚   &GT;

     
    

原始问题

         

我们有很多传统的vcproj项目,我们希望将Qt添加到它。     目前,我们没有一种简单的方法来转换这些传统的vcproj     文件到启用Qt的vcproj。

         

启用Qt是什么意思?

         

在非Qt启用的vcproj上,当我右键单击项目名称时     在解决方案资源管理器下,与Qt相关的所有选项都显示为灰色。

         

如果诺基亚将此功能添加到VSTD加载项,那将非常有用。

  

Stackoverflow研究员,如果您希望诺基亚实现此功能,请在上面的链接中帮助投票! =)

答案 2 :(得分:3)

我使用Qt VS Tools代替Qt VS Add-in。

说明

在.vcxproj文件中,进行以下修改:

<Keyword>Qt4VSv1.0</Keyword>添加到<Project><PropertyGroup Label="Globals">(符合Benjamin's answer)。

将以下元素添加到<Project>(根元素):

  <ProjectExtensions>
    <VisualStudio>
      <UserProperties MocDir=".\GeneratedFiles\$(ConfigurationName)" UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" lupdateOptions="" lupdateOnBuild="0" lreleaseOptions="" Qt5Version_x0020_x64="5.6-msvc2013_64" MocOptions="" />
    </VisualStudio>
  </ProjectExtensions>

请注意,属性Qt5Version_x0020_x64的值应与Qt VS Tools中Qt版本的名称相匹配。您可以设置一个任意值,然后在Visual Studio中的Qt项目设置中修复它。

我的设置

  • Visual Studio 2013
  • Qt VS Tools 2.0.0 Beta(显然是Qt VS加载项的品牌重塑)
  • Qt 5.6 msvc2013_64

注释

当我按照Benjamin's answer并尝试将项目转换为Qt VS Tools项目&#34;时,Visual Studio会卡住。

我在该项目中尝试的唯一Qt特定功能是导出.pri文件。

我已经使用模板 Qt GUI Application 创建的新VS项目进行了必要的修改。

答案 3 :(得分:1)

来自Qt支持工程师的更多答案;我认为第一段是有帮助的,因为我以前不知道:

  

我认为这是一种误解   真。如果你有一个Qt项目   用加载项生成,然后你   可以将此项目更改为qmake   生成Qt项目 - 反之亦然;   如果你有一个.vcproj   然后通过执行qmake -tp vc生成   你可以将它转换为Qt加载项   项目

     

没有转换功能   常规win32项目进入Qt   启用项目,所以建议   创建仍然有效,请参阅:

https://bugreports.qt.io/browse/QTVSADDINBUG-27
     

我可以从这个历史中看到   报告它已被关闭   再次重新打开,所以我认为有   关于你的错误   正在寻找的第一个地方。

     

如果您为项目创建.pro   使用qmake,那么你应该可以   使用'qmake创建.vcproj文件   -tp vc'在.pro文件上。 qmake手册可在此处获取:

http://doc.qt.io/qt-5/qmake-manual.html
     

我希望这会有所帮助。

     

此致

     

-

     

支持工程师,Qt开发   框架,诺基亚

答案 4 :(得分:1)

将常规VC项目转换为QT项目应该更容易,并且Qt插件在尝试将Qt类添加到非QT项目时显示的错误消息非常无益,尤其是在考虑实际差异时Qt .vcprojfile和非Qt文件是最小的。通常情况下,您将现有的遗留代码内置到库和Dll中。在迁移到Qt期间,您可能希望将Qt类添加到以前是非Qt项目的现有模块中。如果模块的源文件相对较少,您可能会发现将项目重新创建为Qt项目更容易。如果它有数百个源文件或者在其他方面很复杂,那么简单地手动编辑.vcproj文件通常会更容易。通过比较常规.vcproj和Qt,可以很容易地看出差异是什么:

  1. Qt项目之前有一个关键字=“Qt4VS1.0” TargetFrameWorkVersion行靠近文件顶部。
  2. 在文件的底部,您需要添加所需的Globals(in 特别是QtVersion.Win32)
  3. 您需要将Qt头文件的位置添加到 包含路径(适用于所有构建配置)。你可以稍后再做 通过visual studio用户界面
  4. 对于exe或dll,您还需要添加Qt库位置 和库文件到链接器选项。
  5. 实际上,您只需要在文本编辑器中执行1和2,然后就可以在Visual Studio中重新加载项目。

    设置包含路径和库后,您应该能够像往常一样构建项目。接下来,您可以添加新的Qt类或将现有类转换为Qt类。要做到这一点,首先从项目中删除现有类的源文件,否则Qt add class向导可能会抱怨。

    以上步骤适用于有经验的用户,您应始终在手动编辑之前备份现有项目.vcproj文件。这里的简单错误会导致文件无法使用。