咨询:将C++ CMake项目转换为Visual Studio .vcxproj项目的可行方案
把CMake项目转换为Visual Studio .vcxproj文件的方法
嘿,这事儿其实CMake本身就自带解决方案,不用折腾第三方工具,我给你梳理几个靠谱的途径:
1. 用CMake命令行直接生成VS项目文件
这是最官方也最直接的方式,CMake原生支持生成对应版本的Visual Studio项目和解决方案文件。
推荐用VS自带的Developer Command Prompt(它已经配置好了VS的环境变量,避免很多路径问题),步骤如下:
- 先建一个和源码目录分开的构建文件夹(比如叫
build),避免把生成文件和源码混在一起:mkdir build && cd build - 运行CMake命令指定VS生成器,比如针对Visual Studio 2022 64位项目:
不同VS版本对应不同的生成器名称:cmake -G "Visual Studio 17 2022" -A x64 ..- Visual Studio 2019:
"Visual Studio 16 2019" - Visual Studio 2017:
"Visual Studio 15 2017"-A x64是指定目标架构,你也可以换成Win32、ARM64等适配你的项目。
- Visual Studio 2019:
执行完后,build目录里就会生成对应的.sln解决方案和.vcxproj项目文件,直接用VS打开.sln就能开始编辑编译了。
2. 用CMake图形界面(cmake-gui)生成
如果不习惯命令行,cmake-gui操作更直观:
- 打开cmake-gui,点击
Browse Source选择你的CMake项目根目录(就是放CMakeLists.txt的文件夹) - 点击
Browse Build选择刚才创建的build目录(或者新的空目录) - 点击
Configure,在弹出窗口里选对应的Visual Studio版本和架构,点Finish等待配置完成 - 最后点击
Generate,就能在构建目录里拿到VS项目文件了
3. 通过Visual Studio直接导出CMake项目为.vcxproj
要是你已经用VS 2017及以后版本打开了CMake项目(VS支持直接打开CMakeLists.txt),可以直接导出成永久的.vcxproj文件:
- 在VS的解决方案资源管理器里,右键点击你的CMake项目
- 选择
Export to Project Files...(不同VS版本 wording 可能略有不同,比如“导出CMake项目到Visual Studio项目文件”) - 跟着向导选好导出路径,就能得到独立的.vcxproj和.sln文件
关于后续给项目完善CMake支持
对了,如果你是想基于生成的.vcxproj再优化CMake支持,其实可以用CMake的include_external_msproject命令把VS项目集成到CMake构建系统里——这样团队里用VS的同事可以直接编辑.vcxproj,用CMake的也能通过构建系统跨平台编译。比如在你的CMakeLists.txt里加:
include_external_msproject(MyVSProject path/to/MyVSProject.vcxproj)
内容的提问来源于stack exchange,提问作者Ionut Enache




