如何在Microsoft Visual Studio中使用GCC?

Mas*_*rry 41 windows gcc cygwin visual-studio

我正在创建一个非常大的项目(几千行),所以宁愿不使用Notepad ++.IDE会让它变得如此简单.我有使用Microsoft Visual Studio的经验并喜欢它.有没有一些简单的方法在Microsoft Visual Studio中使用Cygwin的GCC?

或者,除了NetBeans和Eclipse之外,还有其他适用于GCC的Windows IDE吗?(我非常讨厌他们.)

War*_*ung 34

有几种方法可以去这里:

选项1:创建自定义构建工具

Visual Studio 2005和更新版本将允许您注册自定义构建工具.它们告诉IDE如何将一个表单(例如.cpp文件)的文件转换为另一个表单(例如.obj文件).

据我所知,目前还没有人为海湾合作委员会做过这件事.并且,自己动手需要编写COM代码,这可能是一个太深的池,无法深入到单个项目中.你必须有一个令人信服的理由来参与这个项目.

然后,您必须手动调整每个项目以告诉它使用自定义构建工具而不是默认构建工具,因为您使用的.cpp是Visual C++已经知道的文件扩展名(可能).如果您尝试将VC++和g ++编译器混合为从多个模块构建的单个可执行文件,您将遇到麻烦.

从好的方面来说,如果你想开始一个开源项目,这对我来说听起来不错.我希望你能迅速聚集一个庞大的用户群.

选项2:Makefile项目

  1. 启动Visual Studio并说出文件>新建项目.

  2. 在Visual C++部分中,选择Makefile Project

    如果您使用的是Visual Studio Express,请不要选中提供的项目来检查项目是否为源代码管理.如果你不支付Visual Studio中,你可能也选择不支付微软的昂贵队"解决方案"和VSE不支持第三方VCS插件,比如AnkhSVN的用于颠覆.

  3. 填写Makefile项目向导:

    • 构建命令行: make
    • 清洁命令:清洁
    • 重建命令行: make clean all

保留Output(用于调试)字段,除非您正在做一些奇怪的事情,比如在项目名称后面没有命名可执行文件,或者将可执行文件名放在项目顶层之外的某个位置.

除了你知道它们是什么以及你想要改变它们的原因之外,别管其余的字段.举个例子,您可以选择-D预处理器定义行上传递一个标志,以获得单独的调试和释放输出.如果你知道你想要这个,你就知道如何设置它,所以为了解释它,我不会再做这么长的答案.(如果你不知道如何但又想要,那么对于一个新的SO问题来说这可能是一个很好的主题!)

您将被问到针对Release版本的同一组问题.如果您想打扰单独的调试和发布版本,您可以在此处进行任何更改.

做完这一切,你仍然必须创建Makefile,并添加make.exe到您的PATH.与调试与发布问题一样,进入该级别的详细信息会使该答案脱离主题.

尽管看起来很难看,但它仍然比创建自定义构建工具更容易.另外,你说你最终需要移植到Unix,所以Makefile无论如何你都需要它.

备选方案3:跨平台开发

你说你想在某个时候将这个程序移植到Unix,但这并不意味着你现在必须在Windows上使用GCC.编写程序是很有可能的,以便在Windows上的Visual C++和*ix系统上的GCC/Makefiles下构建.

通过.cpp从单个公共源生成VS项目文件和s,甚至有几种工具可以使这更容易.我碰巧使用Bakefile,但近年来CMake变得越来越流行.SCons也做这个工作,可能也比Bakefile更受欢迎; 它肯定会更频繁地更新.

  • Visual Studio 2015/2017对该答案的任何更新? (4认同)
  • @BenVoigt:当然,但是`Makefiles`是为[MS`nmake`]编写的(http://goo.gl/ZOD2g)(而不是[贝尔实验室`nmake`](http://goo.gl/ZFoZH)如OP所希望的那样,将无法移植到Unix.MS`nmake`将命令解释为`cmd.exe`,而POSIX`make`默认使用`/ bin/sh`.因此,你的`clean`目标中的`rm`命令对于*ix`Makefile`必须是``nmake``.`文件中的`del`.最重要的是,与GNU和BSD make相比,`nmake`已经瘫痪了,它已经占据了*ix世界.此外,OP已经指定他正在使用Cygwin. (2认同)
  • CMake 可能有助于设置链接并包含用于交叉编译的文件夹,但不会阻止您使用不交叉编译的语言功能或库。 (2认同)

小智 7

\n

您可以将 Clang 编译器与 Visual Studio 结合使用来定位 Android、iOS 和 Windows。

\n

如果您的目标是 Android,则可以使用 Android NDK 和工具链附带的 Clang/LLVM 编译器来构建项目。同样,Visual Studio 可以使用在 Mac 上运行的 Clang 来构建面向 iOS 的项目。\xe2\x80\x9c 使用 C++\xe2\x80\x9d 的移动开发工作负载中包含对 Android 和 iOS 的支持。有关针对 Android 或 iOS 的更多信息,请查看我们标记有关键字 \xe2\x80\x9cAndroid\xe2\x80\x9d 和 \xe2\x80\x9ciOS\xe2\x80\x9d 的帖子。

\n

如果您的目标是 Windows,您有以下几种选择:

\n
    \n
  1. 使用Clang/LLVM;\xe2\x80\x9cClang for Windows\xe2\x80\x9d 包含在 Visual Studio 中将 Clang/LLVM 安装为平台工具集的说明。
  2. \n
  3. 使用 Clang 通过 Clang/C2(带有 Microsoft 代码生成的 Clang 前端)来定位 Windows。\n在此输入图像描述
  4. \n
\n

海湾合作委员会

\n

如果您的项目面向 Linux 或 Android,则可以考虑使用 GCC。Visual Studio\xe2\x80\x99s C++ Android 开发本身支持使用 Android NDK 附带的 GCC 构建项目,就像 Clang 一样。您还可以使用带有 GCC 的适用于 Linux \xe2\x80\x93 的 Windows 子系统远程或本地定位Linux \xe2\x80\x93。

\n

在此输入图像描述

\n

请查看我们关于Visual C++ for Linux Development 的文章,了解有关如何使用 Visual Studio 通过 GCC 面向 Linux 的更多信息。如果您对本地定位 WSL 特别感兴趣,请查看从 Visual Studio 定位 WSL

\n

来源:https ://devblogs.microsoft.com/cppblog/use-any-c-compiler-with-visual-studio/

\n