利用 CMake 生成 Visual Studio 工程文件

本文介绍了如何使用CMake工具将Linux项目如libuv转换为VisualStudio工程,以便在Windows上管理和调试。即使项目不直接支持Windows,只要提供CMakeLists.txt,也可通过CMake生成VS工程文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于习惯了 Visual Studio 强大的管理项目、编码和调试功能的读者来说,在 Linux 下使用 gcc/g++ 编译、使用 gdb 调试是一件何其痛苦的事情,对于大多数的开源 C/C++ 项目,如果我们不在意 Windows 和 Linux 在一些底层 API 接口上的使用差别,想熟悉该项目的执行脉络和原理,在 Windows 上使用 Visual Studio 调试该项目也未尝不可。

凡是可以使用 CMake 工具编译的 Linux 程序(即提供了 CMakeLists.txt 文件),我们同样也可以利用 CMake 工具生成 Windows 上的 Visual Studio 工程文件。前提是这个项目支持 Windows 平台,且 CMakeLists.txt 里面有支持 Windows 平台的指令。

这里我们以著名的开源网络库 libuv (node.js 背后的 WebServer 实现)为例。

从 libuv 的官方地址提供的下载链接:Index of dist 下载最新的 libuv 的源码得到文件 libuv-v1.31.0.tar.gz(笔者写作此书时,libuv 最新版本是 1.31.0),解压该文件。在我的机器上,我解压至 F:\mycode\libuv-v1.31.0\ ,解压后的目录中确实存在一个 CMakeLists.txt 文件,如下图所示:

启动 Windows 上的 CMake 图形化工具(cmake-gui),按下图进行设置:

设置完成之后,点击界面上的Configure 按钮,会提示 vsprojects 目录不存在,提示是否创建,我们点击 Yes 进行创建。

如果您的机器上安装了多个版本的Visual Studio,接下来会弹窗对话框让我们选择要生成的工程文件对应的 Visual Studio 版本号。读者可以根据自己的实际情况按需选择。我这里选择 Visual Studio 2019。

点击 Finish 按钮后开始启动 CMake 的检测和配置工作。等待一会儿,CMake 底部的输出框中提示 “Configuring Done” 表示配置工作已经完成。

接下来点击 Generate 按钮即可生成所选版本的 Visual Studio 工程文件,生成的文件位于 vsprojects 目录。

我们可以在界面上点击按钮 Open Project 按钮直接打开工程文件,也可以找到对应目录下的 libuv.sln 打开。

打开后如下图所示:

接下来,我们就可以使用 Visual Studio 愉快地进行编译和调试了。

让我们再深入聊一下上述过程:

在点击 Configure 按钮之后,和在 Linux 下执行 cmake 命令一样,CMake 工具也是在检测所在的系统环境是否匹配 CMakeLists.txt 中定义的各种环境,本质上是生成了一份可以在 Windows 上编译和运行的代码(也就是说该源码支持在 Windows 上运行) 。因此,对于很多虽然提供了 CMakeLists.txt 文件但并不支持在 Windows 上运行的的 Linux 工程,虽然利用上述方法也能最终生成 Visual Studio 工程文件,但是这些文件并不能在 Windows 上直接无错编译和调试。

由于不同的 CMake 版本支持的 CMakeLists.txt 中的语法可能略有细微差别,有些 CMakeLists.txt 文件在使用上述方法 configure 时可能会产生一些错误,需要读者做些修改才能通过。

本文转载自我的站点:2.3 使用Visual Studio管理和阅读开源项目代码

CMake 学习资料

cmake 官方出了一个 cmake 教程电子书《mastering cmake》,这个点子书涉及到 cmake 的方方面面,如果你想系统地学习 cmake,可以看看这本书。

《mastering cmake》下载链接:

链接: https://pan.baidu.com/s/1hy5kcMueNHI9jpS7GuSNvA 提取码: 97tx

官方文档虽然详尽,但是内容太多了,我这里有一份 CMake 简明教程 《CMake Practice》,介绍了 CMake 的必备知识,内容也不多,看起来也比较轻松,推荐一下:

链接: https://pan.baidu.com/s/1DX6MgPJmL5LqwnyNvvaD8w 提取码: 2mke

CppGuide学习资料

我学习和使用 C/C++ 开发快 13 年了,目前在大厂做 C++ 开发,我整理了一套 C/C++ 优质学习资料————CppGuide,内容从 C/C++ 语言、网络编程、操作系统原理到完整的项目源码分析,同时这份资料也包括 C/C++ 学习方法、推荐的阅读书籍、简历指导和求职技巧等。

需要获取以下资料的同学可以点击这里:

CppGuide 学习资料​icon-default.png?t=N7T8https://mp.weixin.qq.com/s/Oej6y-pYcv20YGo6cCyLwg

原创不易,如果觉得有帮助,可以给 @张小方 点个赞~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值