记录一下,最终是想实现这四步,用vs2019开发调试,vscode调试,ubuntu交叉编译
一。vs2019+msvc编译 qt+libyuv
二。vscode+msvc编译qt+libyuv
三。vscode+mingw编译qt+libyuv
四。ubuntu编译
二个大坑
一。window下qt5.15.2工具安装qt5.15.2绑定mingw8.1.0,不支持C17
而ubuntu下qt5.15.2工具安装qt5.15.2需要指定你自己的mingw版本
因此window下qt5.15.2工具需要安装6.6.1,相当于用qt5安装程序装了qt6
二。vscode的项目使用vs2019打开时,vs2019会生成CMakePresets.json和CMakeUserPrests.json
这二个json使用的是vs2019配置,和vscode不兼容。如果想保持兼容需要设置环境变量,我这里因为要兼顾qt5的开发环境,没有选择兼容。这样,当从vs2019切换到vscode时需要手工删除这二个json,从vscode切换到vs2019会自动生成
三。因为msvc不支持64位汇编,所以才用mingw编译用msvc调试。只是舍不得vs2019的使用习惯。
简单步骤:
一。vscode->f1->qt->new obj->helloqt->yes ui->cmake,这里是带ui资源的qt项目
二。生成新的qt项目后,**必须重启vscode**
三。vscode->f1->cmake->select kit ->选择mingw或者选择msvc
四。cmakelist.txt里修改qt5为qt6,c11改为c17
五。环境没问题的话,这里编译完成调试正常。
六。关闭vscode,用vs2019打目录
七。菜单->扩展->Qt vs tools->vserions选择6.6.1
八。解决方案选择cmakelists.txt右键cmake 删除缓冲 **vscode的cmake缓冲和vs2019的不通用**
九。cmake生成
十。解决方案中找到vs2019自动生成的heoolqt.sln,右键生成
十一。解决方案中找到刚生成的helloqt.exe,右键调试,提示缺少qt6 dll
十二。开始菜单找到Qt 6.6.1 (MSVC 2019 64-bit),运行windeployqt6.exe helloqt.exe,打包qt6环境到helloqt.exe目录
十三。调试成功
十四。关闭vs2019打开vscode,因为vs2019自动生成的josn里有qtdebug和qtrelesa,vscode会自动弹出选择项,不管他。
十五。删除CMakePresets.json和CMakeUserPrests.json
十六。f1->cmake删缓冲->cmake kit选mingw->生成
十七。f5调试
至此,vscode和vs2019可以来回切换,vscode里mingw和msvc可以来回切换,mingw编64位汇编libyuv.a也可以给vs2019使用,ubuntu下只用改CMAKE_PREFIX_PATH就可以编译。
下边是一些兼容性处理
if (MSVC)
set(CMAKE_PREFIX_PATH "d:/Qt/Qt5.15.2/6.6.1/msvc2019_64") # Qt Kit Dir
elseif (MINGW)
set(CMAKE_PREFIX_PATH "d:/Qt/Qt5.15.2/6.6.1/mingw_64") # Qt Kit Dir
endif()
if (MSVC)
set(CMAKE_CXX_FLAGS "/permissive- /Zc:__cplusplus")
endif()