如何配置Visual Studio进行跨平台C++开发

27

在主要从事 .NET 开发一段时间后,我需要以跨平台的方式使用 C++ 进行工作。

我不想放弃 Visual Studio,所以我的希望是可以使用 Visual Studio 和 Windows 目标作为测试构建,然后通过虚拟机定期在 Linux 或 Mac 上测试代码。

有没有人有经验知道如何最好地设置这个?

我特别想知道如何确保项目文件与可能在 *nix 平台上需要的 make 文件保持同步。


一个很好的问题。我讨厌 Eclipse 和 GDB。它们笨重,浪费屏幕空间,只支持一个显示器,打印机支持也不好等等... 呜呜呜。但 Windows 没有我在电信应用中所需的 POSIX 计时器支持,我们的生产环境都是 Linux,因此我一直在寻找解决方案。我喜欢 MaHuJa 提到的 WinGDB 和 VisualGDB 解决方案的外观,所以会调查一下。三年多后您能提供任何反馈吗? - user1899861
12年后的一些反馈。我现在使用Visual Studio Code,并使用C++和CMake扩展。对我来说非常好用。 - Toad
4个回答

17
首先,选择一个非托管的C++项目(避免使用.net相关内容)。
之后,将警告级别调高(/W3 应该足够),并非常小心地编写代码。在我看来,GCC更善于让您遵循标准(-Wall -Wextra -pedantic -std=c++11),但您要指定MSVC。
正如Noah所说,您需要一个自身跨平台的构建系统,例如CMake(还有其他,请不要忘记这一点)。
请记得使用与平台/架构/编译器无关的类型,例如 std::size_tstd::(u)intptr_t 等,而不是普通的 intlongunsigned:这些会导致灾难,而Windows API过多地使用这些类型。
请参见 此处,但只特别关注1、2、5和8点(以及9点,但将其泛化为svn、git、mercurial)。

很好的建议。我会确保定期在其他平台上进行测试和构建。我猜最初的设置会花费最长时间(配置库、makefile等),但是随着时间推移,事情会变得更简单对吧? - Toad
直到你编写了大量的代码并发现你的假设在其他平台上是不正确的 :). 从理论上讲,只要你正确配置了构建系统(关于链接器:.lib/.dll (.dll).a/.so等等,路径,平台检测...),它应该可以正常工作。 - rubenvb

5

我特别好奇您是如何确保项目文件与* nix平台上可能需要的make文件保持同步。

由于微软决定从VS中删除对makefile的支持,您无法直接使用它。相反,您可以使用像CMake这样的其他工具来生成VS项目文件,并确保正确设置它。


1
我们正在使用CMake来消除对Visual Studio项目系统的依赖。效果非常好。http://www.cmake.org/ - David
@toad - 大体上来说,是的。自2005年或更早以来,VS就无法输出makefile了。坦白说,如果您想进行跨平台开发,最好使用其他工具。微软倾向于尽可能地阻止这样的事情,在VS中通过使其几乎不可能实现来实现这一点。 - Edward Strange
1
有很多选择:QtCreator、Code::Blocks、Eclipse(CDT插件)、Netbeans插件。按个人喜好排序。 - rubenvb
1
@noah 我有一些使用 Eclipse 的经验(用于 Flex、PHP 和 Python)。它功能齐全,但总是感觉有点卡顿。 - Toad
@rubenvb qtcreator看起来非常时髦。内置的qt支持非常好。 - Toad
显示剩余3条评论

4

2

三年后...

如果你使用的是非 Express 版本,使得可以使用插件,那么有诸如WinGDBVisualGDB之类的工具可以帮助你。

Duckduckgo 还告诉我有一个名为make-it-so的项目,但是它已经过时了。不过由于新的基于 XML 的项目格式应该更易于创建,现在可能会有其他类似的工具。


我想使用Visual Studio调试Linux C/C++代码,所以这似乎是个好方法。如果它像广告中说的那样起作用,那么非常感谢!它将使我的生活变得更加轻松。 - user1899861

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