【问题标题】:How to setup visual studio for cross platform c++ development如何为跨平台 C++ 开发设置 Visual Studio
【发布时间】:2011-03-31 03:46:07
【问题描述】:

经过一段时间主要是.net开发,我需要以跨平台的方式在c++中工作。

我不想放弃visual studio,所以我希望可以使用visual studio和windows目标作为testbuild,然后每隔一段时间通过vm测试一下代码linux 或 mac。

有没有人在如何最好地设置这个方面有经验?

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

【问题讨论】:

  • 一个很好的问题。我讨厌 Eclipse 和 GDB。笨重,屏幕空间使用不佳,一台显示器,糟糕的打印机支持等等......呃。虽然 Windows 没有我需要的电信应用程序所需的 POSIX 计时器支持,而且我们的生产环境都是 Linux,所以我一直在寻找解决方案。我喜欢下面 MaHuJa 指出的 WinGDB 和 VisualGDB 解决方案的外观,因此将对其进行研究。您可以在 3 年后提供任何反馈吗?

标签: c++ windows visual-studio unix cross-platform


【解决方案1】:

首先,选择一个非托管 C++ 项目(避免使用 .net 的东西)。

之后,将警告级别调高(/W3 应该这样做),并且要非常小心你所做/写的事情。恕我直言,GCC 更擅长让您直接使用标准 (-Wall -Wextra -pedantic -std=c++11),但您指定了 MSVC。

正如 Noah 所说,您需要构建本身就是跨平台的系统,例如 CMake(还有其他的,请不要忘记这一点)。

记住使用平台/架构/编译器独立类型,例如std::size_tstd::(u)intptr_t 等,而不是普通的intlongunsigned:这些都是灾难的根源,Windows API 会抛出这些太多了。

参见here,但仅/尤其是第 1、2、5 和 8 点(和第 9 点,但将其推广到 svn、git、mercurial)。

【讨论】:

  • 很棒的提示。我会确保定期在其他平台上进行测试和构建。我猜初始设置将花费最长的时间(配置库、makefile 等),但最终事情会变得更简单,对吧?
  • 直到您编写了大量代码并发现您的假设在其他平台上不正确:)。理论上,如果构建系统正确(关于链接器:.lib/.dll (.dll).a/.so 等等,路径,平台检测...)
【解决方案2】:

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

由于 MS 决定从 VS 中删除对 makefile 的支持,因此您没有这样做。您使用其他可以生成 VS 项目文件的东西,并确保您保持正确设置。像 CMake 之类的东西。

【讨论】:

  • 我们正在使用 CMake 来移除对 Visual Studio 项目系统的依赖。效果很好。 cmake.org
  • 所以当新文件添加到项目中时,我将从 cmake 执行此操作,然后启动 Visual Studio?
  • @toad - 或多或少,是的。自 2005 年或更早以来,VS 一直无法输出 makefile。坦率地说,如果你想做跨平台开发,你最好用别的东西。 MS 倾向于尽可能地阻止此类事情,而在 VS 中,他们通过使其几乎不可能做到这一点来做到这一点。
  • 其中有很多:QtCreator、Code::Blocks、Eclipse(CDT 插件)、Netbeans(插件)。这些是按个人喜好排列的。
  • @noah 我对 eclipse 有一些经验(将它用于 flex、php 和 python)。它功能齐全,但总给人一种迟钝的感觉。
【解决方案3】:

这是 6 年前的一个古老问题,但我只想指出,微软现在有官方工具可以在 Visual Studio 中使用 linux c++:

https://blogs.msdn.microsoft.com/vcblog/2016/03/30/visual-c-for-linux-development/

此外,Windows 10 现在能够 Windows 中运行 Linux,因此对于仍然对在 Visual Studio 上使用 C++ for Linux 进行开发感兴趣的人来说,它应该会让你的生活变得更加轻松。

【讨论】:

    【解决方案4】:

    (3 年后...)

    如果您有NON-EXPRESS,从而允许使用插件,那么WinGDBVisualGDB 之类的东西可以帮助您。

    Duckduckgo 还告诉我 make-it-so 已经过时了 - 但现在可能还有更多,因为使用新的基于 xml 的项目格式制作它们应该更简单。

    【讨论】:

    • 我想使用 Visual Studio 来调试 Linux C/C++ 代码,所以这看起来像票。如果它像宣传的那样工作,一百万次感谢。它会让我的生活变得更轻松。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多