持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第25天,点击查看活动详情。
网上有传言 vcproj2cmake.rb 可以根据 Visual Studio 的工程文件(后缀名是 .vcproj 或 .vcxproj)生成 CMakeLists.txt 文件。让我们来一探究竟,看看他是不是可以解放我们的双手。
一、尝试一:sourceforge.net/projects/vc…
详细的Visual Studio .vcxproj / .vcproj项目到cmakellists .txt转换器,支持Makefile或Ninja或IDE构建,即完整的多平台CMake功能(Linux, Mac, Windows…)实时更新功能:支持并行跟踪生成的原始proj文件,在构建树中!!用于静态CMake defs的脚本钩子,强大的定义到变量映射。
对项目数据内容的访问是通过git repository only(这是一个开发人员基础设施项目,因此替代方案不太合适)。注意有几个可用于签出的分支(git分支-a)
二、进入 vcproj2cmake.rb 下载页面
vcproj2cmake.rb 是详细的 Visual Studio.vcxproj / .vcproj 项目到 CMakeLists.txt 转换器,支持 Makefile 或 Ninja 或 IDE 构建,即完整的跨平台 CMake 功能(Linux, Mac, Windows…)实时更新功能: 支持并行跟踪生成的原始 proj 文件,在构建树中!!用于静态 CMake defs 的脚本钩子,强大的定义到变量映射。
对项目数据内容的访问是通过 git repository only (这是一个开发人员基础设施项目,因此替代方案不太合适)。要注意有几个分支可用于签出(git分支-a): "experimental_unverified"是给胆子大的人的(从当前最具特色的代码开始),而 "experimental" 的可用性总是通过大规模的构建得到巩固。
有关说明请参阅 README.txt
- 关于临时访问请参阅Browse Code按钮(experimental_unverified head)
- 然后尝试通过install_me_fullly_guided.rb 在.vc[x]基于项目的源代码树上进行引导安装。
三、具体使用方式要参看github源码
git clone git.code.sf.net/p/vcproj2cm… vcproj2cmake-code
重点要读一下它的 README.txt,我这里就先来翻译一下。
免责声明 :对于这个转换器的适用性没有保证
因此,确保有适当的备份;如果事情打破, 那你当然可以保留这两部分。
vcproj2cmake已经在CMake 2.6.x 中进行了全面测试。只有一些 2.8.x 测试已经完成了, 可能会有一些困难的地方。
Linux/Makefile生成器的用法(非常粗略的总结):
使用现有的 Visual Studio 项目包含 .vcproj 文件的源代码树
在项目源代码树中,运行 ruby [PATH_TO_VCPROJ2CMAKE]/scripts/vcproj2cmake.rb PROJECT.vcproj (另外,执行 vcproj2cmake_recursive.rb 转换 .vcproj 子项目的整个层次结构)
复制所有需要的 cmake/Modules, cmake/vcproj2cmake和样本(由vcproj2cmake源树提供!)到它们在项目源树中的各自路径
成功地将 .vcproj 文件转换为 CMakeLists.txt 后,开始构建树外(out-of-tree)的 CMake:
- mkdir ../[PROJECT_NAME].build_toolkit1_v1.2.3_unicode_debug
- cd ../[PROJECT_NAME].build_toolkit1_v1.2.3_unicode_debug
- cmake ../[PROJECT_NAME] (alternatively: ccmake ../[PROJECT_NAME])
- time make -j3 -k
注意:首先要说明的是:
如果没有任何用户对你上瘾,那就继续使用
它们在Visual Studio上的静态.vcproj文件,那么它可能就不那么有意义了
使用我们的转换器作为一个有点麻烦的在线转换器解决方案
相反,你可以选择去全面手动转换到CMakeLists.txt文件(基于您初始的CMakeLists.txt布局
当然,在我们脚本的输出上也是如此)。
这样就可以避免处理钩子脚本的include as
要求我们的在线转换概念,而不是修改您的 CMakeLists.txt 文件直接
四、总结
总结一下就是cmake 2.6.x 测试过,具体还要根据项目情况而定,所以大家可以尝试,但是不要碰瓷