【问题标题】:How to build a Visual C++ Project for Linux?如何为 Linux 构建 Visual C++ 项目?
【发布时间】:2010-10-22 14:59:15
【问题描述】:

构建(对于 Linux)用 Visual Studio 编写的 C++ 应用程序的最佳和最简单的方法是什么?代码本身已经准备好了 - 我只使用了跨平台库。

是否可以在 Visual Studio 中在 Windows 下准备好所有内容,然后在 Linux 下使用 CLI 工具构建它?有没有描述这个的文档?

编辑:更多信息:

  • 使用的库:stl、wxwidgets、boost、asio、cryptlib。

  • 很少有 Linux 专业知识。

EDIT#2:我选择了以下解决方案:使用 kdevelop 创建新项目并在那里编译所有内容。

【问题讨论】:

    标签: c++ visual-studio linux visual-c++


    【解决方案1】:

    在 Linux 上构建使用 Visual Studio 编写的 c++ 应用程序的最佳和最简单的方法是什么?代码本身已经准备好了 - 我只使用了跨平台库。

    • 检查是否有任何不属于标准 C++ 的内容
    • 冲洗并重复
    • 创建 makefile 或 KDevelop 项目

    等等!

    【讨论】:

    • 这个makefile可以从VisualStudio生成吗?需要进行哪些更改才能使其在 Linux 下运行? /mspoerr
    • 某些版本的 VS 可以为 nmake 生成 makefile——一个基于 Windows CLI 的构建系统。您在 *nix 系统上找到的品牌有点不同。您将需要消除差异。 IMO,1)在 Windows 上使用 Code::Blocks(或一些跨平台 IDE)和 gcc 来使构建系统正常工作,然后在 Linux 上使用它,或者 2)使用 KDevelop 会更容易-n-feel 类似于 VS 添加源文件/库等并为您创建基于 autoconf 的构建系统。
    【解决方案2】:

    我们正在为 Linux 项目使用 CMake。 CMake 可以生成 KDevelop 和 Visual Studio 项目文件,因此您只需将 CMake 文件创建为特定于平台的 IDE 文件的来源。 KDevelop 生成器很好,因此您可以在 KDevelop 中进行编辑和编译(这又会调用 Make)。

    另一方面,如果你没有什么花哨的东西,你可以使用 CMake 或只是 Make 在 Linux 上构建东西,如果你想保留你的解决方案文件(这是我目前正在为一个库做的测试应用程序)。当您的构建过程不仅仅是“将这些文件扔给编译器并让我们看看它做了什么”时,这种方法会变得复杂,因此我认为 CMake 解决方案对于跨平台开发来说是一件好事。

    【讨论】:

    • 我想要这样,我可以使用现有的 VisualStudio 设置并将其保存为 makefile?并在 Linux 下使用。那可能吗? /mspoerr
    • Visual C++ 至少在前一段时间支持将项目/解决方案导出到 makefile。您可以尝试一下,但生成的 makefile 是(或当时是)一团糟。您还可以尝试创建一个 XSLT 来将项目文件(虽然不是解决方案)转换为您喜欢的任何内容,包括 Makefile 或 CMake 文件。
    【解决方案3】:

    下面是如何在 Linux 下手动编译 C 代码无需额外的构建工具

    gcc -s -O2 -o prog -I. -Iincludedir1 -Iincludedir2 -Llibdir1 -Llibdir2 code1.c code2.c -luse1 -luse2
    

    但是,如果您的项目大于几个文件,您可能希望使用构建工具(例如 CMake,请参阅 OregonGhost 的答案)来自动编译许多文件并制作它是增量的。如果您使用构建工具,它将在引擎盖下运行 gcc,并具有上述类似的参数。了解上述参数很有用,这样您就可以在自动构建失败时进行故障排除。

    这会将 code1.c 和 code2.c 编译为可执行的二进制 prog,从 .、includedir1 和 includedir2 加载 .h 文件,从目录 libdir1 和 libdir2 加载库(例如 libuse1.so* 和 libuse2.so*),使用库use1(对应文件名libuse1.so*)和use2。

    如果在 .c 文件中出现未定义符号错误,则必须指定更多 -I 标志。如果在 .o 文件中出现未定义符号错误,则必须指定更多 -l 标志。如果遇到cannot find -l... 错误,则必须指定更多-L 标志。

    【讨论】:

    • 我假设他有多个文件。不使用 Makefile 进行编译是愚蠢的。
    • @Zifre:我已经更新了我的答案,推荐了一个构建工具。即使使用了构建工具,我认为我的回答曾经而且对于故障排除很有见地和有用。
    【解决方案4】:

    8 年后...

    我今天偶然发现了这个问题,并认为您可能想看看Visual C++ for Linux

    2016 年 3 月发布的 VC++ for Linux 允许您在 VC++ 中创建一个项目,然后使用本机 Linux 工具在 Linux 机器/VM 中构建它。此外,您还可以在 VS 中调试您的应用,因为 Linux 工具允许 VS 调试器通过 SSH 在您的 Linux 机器/VM 中驱动 GDB!!

    看起来这几乎正是@mspoerr 所要求的:)

    【讨论】:

      猜你喜欢
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 2021-11-02
      • 2017-05-15
      • 1970-01-01
      • 1970-01-01
      • 2021-07-17
      相关资源
      最近更新 更多