如何将现有的vcproj文件转换为Visual Studio的QT加载项识别并视为有效Qt项目的项目文件?
我应该咬紧牙关并创建新项目来替换旧项目,然后添加现有代码吗?
我正在使用QT 4.6和VS 2008与Qt Add-in 1.1.2。 原始vcproj文件已使用QMake生成 NOT 。
答案 0 :(得分:29)
使用Visual Studio 2010+,现在可以使用Qt Addin的“将项目转换为Qt加载项目”功能将项目转换为Qt Addin项目。
以下步骤来自错误QTVSADDINBUG-27中的work around。这是使用Visual Studio 2010测试的,但应该与新版本类似:
<Keyword>Qt4VSv1.0</Keyword>
和<PropertyGroup Label="Globals">
之间添加行</PropertyGroup>
。如果您的项目中有头文件,则必须按照此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项目设置中修复它。
当我按照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和2,然后就可以在Visual Studio中重新加载项目。
设置包含路径和库后,您应该能够像往常一样构建项目。接下来,您可以添加新的Qt类或将现有类转换为Qt类。要做到这一点,首先从项目中删除现有类的源文件,否则Qt add class向导可能会抱怨。
以上步骤适用于有经验的用户,您应始终在手动编辑之前备份现有项目.vcproj文件。这里的简单错误会导致文件无法使用。