vs2022+cmake+qt+linux问题总结(1)

简介

最近需要把一个vs2017+qt5.14.0工程编译成linux(使用vm17+ubuntu24)版本,考虑到cmake 工程的跨平台编译性,想把这个项目工程转换成cmake编译,还想通过ssh连接,在vs2022(因为vs2017无法建立ssh连接,估计是证书问题)中直接编译cmake工程,然后在ubuntu中运行,环境搭建非常麻烦,现在持续记录整理一些出现的问题(vs+cmake+qt+linux的远程连接与编译问题已经解决,现在整理的是vs+qt工程转换成cmake编译的问题,如果有小伙伴想了解之前的环境搭建问题,可以留言,看到了会回复)

问题1:下载安装cmake-converter

cmake-converter是网上广为流传的vs转cmake编译工具,主要功能是生成CMakeLists.txt文件(百度来的,有不同见解请留言),cmake-converter需要python3.x的环境,网上全是安装教程,这里不做赘述,安装完python环境后,打开PowerShell使用指令:

pip install cmake-converter

但是报错:‘已处理证书链,但是在不受信任提供程序信任的根证书中终止’。

怀疑是ssl证书验证有问题,尝试禁用验证,但是无效,发现原因是默认下载源访问受限,因此要使用镜像源解决,更换了清华镜像源解决,指令如下:

pip install cmake-converter -i https://pypi.tuna.tsinghua.edu.cn/simple/

问题2:编译CMakeLists.txt文件报错

尝试用cmake-converter直接把项目工程转换成cmake工程,报错无法转换(看不懂),应该是项目工程比较复杂,无法直接全自动转换(真是麻烦,能全自动转换少干一星期的活),因此先用vs2022生成了一个工程,然后打开PowerShell使用指令:

cmake-converter -s 工程目录\xxx.sln

转换完成,显示如下:

在这里插入图片描述
然后在vs2022中打开工程所在文件夹,这时候vs会自动去编译这个CMakeLists.txt文件,但是生成的文件不是直接能编译的,报错:No SOURCES given to target: ConsoleApplication1
在这里插入图片描述
原因很简单,因为ALL_FILES是空的,版本较新的cmake-converter不允许ALL_FILES为空,把Source groups中的内容修改如下就行:

################################################################################
# Source groups
################################################################################
# 定义源文件列表(假设你的项目只有一个源文件)
set(SOURCE_FILES
    "ConsoleApplication1.cpp"
)

# 将源文件分组(例如放入 "源文件" 组)
source_group("源文件" FILES ${SOURCE_FILES})

# 定义头文件列表(如果有头文件)
set(HEADER_FILES
    "ConsoleApplication1.h"  # 如果有头文件,可以在此添加
)

# 将头文件分组(例如放入 "头文件" 组)
source_group("头文件" FILES ${HEADER_FILES})

# 合并所有文件(源文件 + 头文件)
set(ALL_FILES
    ${SOURCE_FILES}
    ${HEADER_FILES}
)

编译成功:
在这里插入图片描述
但是我又尝试把一个qt+vs工程转换成cmake工程,报错如下:
在这里插入图片描述
应该是cmake_converter不支持转换qt工程,正在解决中(有知道怎么操作的小伙伴可以交流讨论一下)…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

麻将牌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值