我有一个包含大量源文件和头文件的 Visual Studio-2010 项目。现在我需要在最新的 Debian GNU/Linux 下自动构建这个项目。所以我选择使用MinGW。但我需要这个 Visual Studio 项目的生成文件。有没有一种简单的方法可以将 vs 项目转换为生成文件?或者 MinGW 可以直接构建一个带有附加包或库的 Visual Studio 项目?任何想法将不胜感激。
2 回答
我不知道任何能够开箱即用的工具链。CMake(和所有其他元 makefile 生成器)仅提供单向转换:它们可以生成一次 Visual Studio 项目/解决方案,但无法自动与 VS/MSBuild 配置中所做的更改同步。编写和维护 CMake(或 PreMake 或其他)配置是一件痛苦的事情,而且只有在您的主要开发平台位于 Microsoft 平台之外的任何地方时才有意义。
不过有一个有趣的替代方案:xbuild - MSBuild 的一个端口,它是 VS 智能背后的构建系统。从理论上讲,可以扩展系统以支持 Visual Studio 生成的 MSBuild 配置,并为其他平台上的适当 C++ 工具链定义转换规则(甚至以双向方式)。与 autotools/make 相比,MSBuild/XBuild 的声明性、基于 XML 的性质是一个巨大的胜利,这在我的开发人员的生活中花费了我太多的时间和不便。MSBuild/XBuild 都是作为纯托管框架实现的,具有精心设计的架构,因此扩展非常容易实现。当然,只有当您(或您的公司)认真考虑大规模跨平台支持时,这才会得到回报。
如果您想将程序的构建永久移植到 GNU/Linux,我建议切换到自动工具(autoconf 和 automake)。自动工具非常普遍,并且具有出色的交叉编译支持。(另一方面,也有点怪异的声誉。)虽然我知道 VS 项目没有自动翻译,但单个程序的编译可以像查找所有源文件和头文件一样简单设置,在 Makefile.am 中适当地列出它们并为 Windows 对象编写规则。
如果向 MinGW 的过渡不是一成不变的,或者可能会出现持续的两个编译器构建场景,请像评论者建议的那样使用 cmake。虽然我一直发现 CMake 对于非维护构建(开源软件很常见)来说是一个主要难题,但它在生成各种构建描述文件(如 Makefile 和 VS 项目)方面享有盛誉。
无论哪种方式,您都必须手动转换您的项目。对于正常的项目结构来说,这很容易,但必须这样做。