VS之间兼容性很好解决,但是qt+vs的项目转移很难解决.这是由于QT的vs插件不完善导致的.
本文将交大家如何在不同版本的vs之间,转移不同版本的qt项目.
转移步骤
- 清理vs/qt的 编译/临时/部分配置 文件
- 导入vs
- 转换成
qt vs tools
项目 - 配置 qt 版本
- 配置 qt 头文件/依赖
不一定 所有转移的项目 都需要配置 3,4,5
,有时会直接兼容,但是还是建议自己 手动查看一下
案例项目介绍
- 本章给出的实例是由vs+qt creator 双重编译的版本
- 考虑到linux平台的编辑,假定最后由 qt creator编辑
项目编辑历史
- vs(版本1)创建qt项目
- qt creator编辑项目(增加一些项目文件)
- 再次导入vs(qt,vs版本均与之前不同,这时不仅配置有问题,还有很多项目文件vs无法识别)
清理 无用文件
- 转移项目时,庞大的历史数据以及临时文件往往令人非常头疼,但是全部删除的话又怕导入很麻烦
- 即使项目导入成功.有些临时文件仍然会影响你进行二次编译
我们先看一下 这个复杂项目的文件树
├── Debug
├── MyCad
│ ├── Debug
│ │ ├── MyCad.Build.CppClean.log
│ │ ├── MyCad.log
│ │ ├── MyCad.tlog
│ │ │ ├── CL.command.1.tlog
│ │ │ ├── CL.read.1.tlog
│ │ │ ├── CL.write.1.tlog
│ │ │ ├── MyCad.lastbuildstate
│ │ │ ├── custombuild.command.1.tlog
│ │ │ ├── custombuild.read.1.tlog
│ │ │ ├── custombuild.write.1.tlog
│ │ │ ├── link.command.1.tlog
│ │ │ ├── link.read.1.tlog
│ │ │ ├── link.write.1.tlog
│ │ │ └── unsuccessfulbuild
│ │ ├── MyLine.obj
│ │ ├── main.obj
│ │ ├── moc_mycad.obj
│ │ ├── mycad.obj
│ │ ├── qrc_mycad.obj
│ │ └── vc140.pdb
│ ├── GeneratedFiles
│ │ ├── Debug
│ │ │ └── moc_mycad.cpp
│ │ ├── Release
│ │ │ └── moc_mycad.cpp
│ │ ├── qrc_mycad.cpp
│ │ └── ui_mycad.h
│ ├── MyCad.pri
│ ├── MyCad.pro
│ ├── MyCad.pro.user
│ ├── MyCad.vcxproj
│ ├── MyCad.vcxproj.filters
│ ├── MyCad.vcxproj.user
│ ├── MyLine.cpp
│ ├── MyLine.h
│ ├── Release
│ │ ├── MyCad.Build.CppClean.log
│ │ ├── MyCad.log
│ │ ├── MyCad.tlog
│ │ │ ├── CL.command.1.tlog
│ │ │ ├── CL.read.1.tlog
│ │ │ ├── CL.write.1.tlog
│ │ │ ├── MyCad.lastbuildstate
│ │ │ ├── custombuild.command.1.tlog
│ │ │ ├── custombuild.read.1.tlog
│ │ │ ├── custombuild.write.1.tlog
│ │ │ ├── link.command.1.tlog
│ │ │ ├── link.read.1.tlog
│ │ │ └── link.write.1.tlog
│ │ ├── main.obj
│ │ ├── moc_mycad.obj
│ │ ├── mycad.obj
│ │ └── qrc_mycad.obj
│ ├── Resources
│ │ ├── line.ico
│ │ └── rectangle.ico
│ ├── cmyrect.cpp
│ ├── cmyrect.h
│ ├── factory.cpp
│ ├── factory.h
│ ├── framewnd.cpp
│ ├── framewnd.h
│ ├── ishape.cpp
│ ├── ishape.h
│ ├── linefactory.cpp
│ ├── linefactory.h
│ ├── main.cpp
│ ├── mycad.cpp
│ ├── mycad.h
│ ├── mycad.qrc
│ ├── mycad.ui
│ ├── rectfactory.cpp
│ └── rectfactory.h
├── MyCad.sdf
├── MyCad.sln
├── Win32
│ ├── Debug
│ │ ├── MyCad.exe
│ │ ├── MyCad.ilk
│ │ └── MyCad.pdb
│ └── Release
│ └── MyCad.exe
└── build-MyCad-Desktop_Qt_5_9_6_MinGW_32bit-Debug
├── GeneratedFiles
│ ├── debug
│ │ ├── moc_mycad.cpp
│ │ └── moc_predefs.h
│ ├── qrc_mycad.cpp
│ ├── release
│ └── ui_mycad.h
├── Makefile
├── Makefile.Debug
├── Makefile.Release
├── debug
│ ├── main.o
│ ├── moc_mycad.o
│ ├── mycad.o
│ └── qrc_mycad.o
└── release
头昏眼花有没有
现在来删除一些不需要的文件
.vs 文件夹
主要是一些项目配置文件- 所有
release
debug
字样的文件,这个不用说都是一些编译结果 sdf
文件 vs专属的临时文件build-MyCad-Desktop_Qt_5_9_6_MinGW
类似这种名称的也要删除,这是qt creator
的临时文件
我们再看一下清理后的项目文件
├── MyCad
│ ├── GeneratedFiles
│ │ ├── Debug
│ │ │ └── moc_mycad.cpp
│ │ ├── Release
│ │ │ └── moc_mycad.cpp
│ │ ├── qrc_mycad.cpp
│ │ └── ui_mycad.h
│ ├── MyCad.pri
│ ├── MyCad.pro
│ ├── MyCad.pro.user
│ ├── MyCad.vcxproj
│ ├── MyCad.vcxproj.filters
│ ├── MyCad.vcxproj.user
│ ├── MyLine.cpp
│ ├── MyLine.h
│ ├── Resources
│ │ ├── line.ico
│ │ └── rectangle.ico
│ ├── cmyrect.cpp
│ ├── cmyrect.h
│ ├── factory.cpp
│ ├── factory.h
│ ├── framewnd.cpp
│ ├── framewnd.h
│ ├── ishape.cpp
│ ├── ishape.h
│ ├── linefactory.cpp
│ ├── linefactory.h
│ ├── main.cpp
│ ├── mycad.cpp
│ ├── mycad.h
│ ├── mycad.qrc
│ ├── mycad.ui
│ ├── rectfactory.cpp
│ └── rectfactory.h
└── MyCad.sln
很干净有没有,都是源码
查看一下大小,体积小了几百倍有没有
导入vs
由于删除了vs的配置文件,我们需要先对vs进行一些项目专属的配置
这里就不细说了,只是提个醒
可能会提示需要升级vs项目版本,看需求自己来
转换成qt vs tools
项目
- 我们用vs打开项目后可能会出现一系列问题,先别管
- 我们先打开
qt vs tools
- 我们选择转换到
qt vs tools project
配置 qt 版本
- 有时我们刚用vs打开就会提示qt版本不对,我们在这一步处理这个问题
- 先打开 qt配置界面
- 我们在 这里选择qt版本号
这里有个很严重的坑!!! 有些环境下 这个界面的的ok按钮
会显示不出来,直接回车就行
配置 qt 头文件/依赖
- 上面几步完成后有些项目就可以运行了
- 但是仍然有些项目文件会提示 qt的包找不到,我们只需要导入qt的头文件/依赖 即可
- 仍然是打开 qt配置界面.不过我们这次选择
Qt Modules
- 有没有感觉很眼熟,这里就是我们创建qt项目时选择的依赖,根据需要选择即可
收尾
- 到这里项目实际上已经导入完成了,但是有些项目仍然会提示
找不到xxx
之类的问题
转换成vs项目时那些qt creator
增加的项目文件不会导入到vs中 - 根据需要直接在vs中增加/删除文件链接就可以了
源码就在项目目录下,只是没有链接而已
One comment
厉害了大佬