Mingw能否构建Visual Studio 2010项目?

6

我有一个包含大量源文件和头文件的Visual Studio 2010项目。现在我需要在最新的Debian GNU/Linux下自动构建此项目。因此,我选择使用MinGW。但是我需要一个这个Visual Studio项目的makefile。是否有一种简单的方法将VS项目转换为makefile?或者MinGW可以直接构建带有附加软件包或库的Visual Studio项目吗?任何想法都将不胜感激。


这个项目已经移植到Linux了吗?还是你只是交叉你的手指,希望它能编译成功?因为即使构建系统“只是工作”(商标),也不能保证代码实际上可以正确编译和/或链接。 - Chris Eberle
这个项目还没有移植到Linux?我也不想这么做。我想在Windows下开发,并在Linux上自动构建。 - machinarium
抱歉,这只是一个白日梦。除非您使用完全跨平台的库(如boost、qt等),不进行任何系统调用(可能正在发生而您甚至没有意识到),并使用跨平台构建系统(如cmake),否则这根本不可能实现。使C / C ++项目跨平台通常是相当费力的。此外,在此上下文中,“自动构建”是什么意思我也不确定。编译农场?自动化构建? - Chris Eberle
嗯,“自动构建”意味着可以使用脚本(例如makefile)完成构建。 - machinarium
那不是自动构建,那是make。而且有很多种。你应该真正看看cmake,它可以生成Linux makefile和Visual Studio项目。然而,正如我所强调的,这并不能保证代码实际上能在其他架构上编译。 - Chris Eberle
显示剩余3条评论
2个回答

1
如果您想将程序永久移植到GNU/Linux,我建议您切换到autotools(autoconf和automake)。Autotools非常普及,并且具有出色的交叉编译支持。(另一方面,也有一些奇怪的声誉。)虽然我不知道是否有从VS项目自动转换的工具,但编译单个程序可以像查找所有源文件和头文件,适当地在Makefile.am中列出它们,并为Windows对象编写规则那样简单。
如果转换到MinGW还没有确定或者可能会继续使用两个编译器进行构建,请按照评论者的建议使用cmake。虽然我始终认为CMake对于非维护者构建(开源软件常见)来说是一个主要的痛点,但它以生成各种构建描述文件(如Makefiles和VS项目)而闻名。
无论如何,您都必须手动转换项目。对于普通项目结构来说,这可能非常容易,但必须完成。

1

我不知道任何能够直接完成这项任务的工具链。CMake(以及其他所有元makefile生成器)只提供单向转换:它们可以生成一个Visual Studio项目/解决方案,但无法自动与VS/MSBuild配置中所做的更改同步。编写和维护CMake(或PreMake或其他)配置非常麻烦,只有在您的主要开发平台位于Microsoft平台之外时才有意义。

不过还有一种有趣的选择:xbuild- MSBuild的移植版本,是VS智能背后的构建系统。理论上,人们可以扩展该系统以支持由Visual Studio生成的MSBuild配置,并为其他平台上的正确C++工具链定义转换规则(甚至是双向的)。相对于耗费我大量时间和不便的autotools/make,MSBuild/XBuild的声明性基于XML的本质是巨大的优势。MSBuild/XBuild都被实现为纯管理框架,并采用设计良好的架构,因此很容易实现扩展。当然,只有在您(或您的公司)认真考虑大规模跨平台支持时,才会收回这些成本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接