有没有办法利用 GCC 编译器,同时仍然能够通过 Visual Studio IDE 进行开发?

我们的项目是跨平台的,我经常遇到麻烦 同事 因为我正在检查不符合标准的代码(这可以归因于 VS 编译器!)。

我仍然希望能够使用 MS 编译器进行编译,这样我就可以继续调试等,但是我希望能够 转变 使用 GCC 进行编译,这样我就可以确定我不会破坏其他平台上的构建。

这可能吗?

有帮助吗?

解决方案

我要建议的内容仍然需要 makefile,因此我部分重复了之前回复中的建议。或者,正如前面提到的,也许您已经有了一个 makefile,在这种情况下,您将需要更少的步骤来完成我将要描述的内容。

一旦您知道用于在代码上调用 make 或 g++ 的特定 Windows 命令行命令,您就可以在 Visual Studio 项目中创建一个“预构建事件”。(“项目属性>>配置属性>>构建事件>>预构建事件”)。

预构建事件可以调用 bat 文件脚本或计算机上的任何其他脚本,并且该脚本将能够返回错误代码。本质上,“脚本正常”或“脚本失败”是您的脚本可以返回到 Visual Studio 的通信量的程度。

该脚本不会自动查看所有 Visual Studio 环境变量(例如 $(InputDir)、$(ProjectDir)、$(SolutionName) 等),但是您可以在指定如何调用脚本时使用这些变量。换句话说,您可以将这些值作为参数传递给脚本。

设置此选项,以便每次在 Visual Studio 中构建时,预构建事件将首先尝试在代码上运行 make/g++。如果您的脚本(调用 make/g++ 的脚本)检测到任何问题,则脚本会返回错误,并且可以立即停止构建。该脚本可以打印到 stdout 或 stderr,并且该输出应该在 Visual Studio Build 输出窗口中对您可见(该窗口通常显示类似“========== Build:3 成功,0 失败”)。

您可以打印脚本:

“构建失败,检测到不可移植代码,make/g++ 返回以下内容:.........”

这样,您就不必记住定期从 Visual Studio 切换到命令行。每次构建时都会自动为您完成。

其他提示

当然有办法做到这一点——这就是我们使用索尼工具链(基于 gcc)为 PS3 进行开发的方式。我不知道它到底是如何工作的,但它非常无缝地集成到 VS 中。

我认为您需要做的是将其设置为使用 makefile 进行构建(可能是最简单的),或者编写一个将 VC 参数转换为 gcc 参数的包装程序。另外,如果您想要 VS 格式的错误/警告输出(这样您可以单击它并在编辑器中获取该文件/行),您需要一些东西来转换输出。

这些东西可能会帮助你 相关讨论 关于与WRS/VXWORKS版本一起使用GCC工具的VS:

特别要注意的是 链接到那里的程序 它转换错误输出。

我不认为有一个简单的开关,因为gcc的命令行选项与VS有很大不同。无论如何,仅仅运行编译器就很重要,因为您的构建系统可能会设置一堆预处理器定义和构建变量,需要设置这些变量才能成功进行编译。

如果你的同事正在使用 Unix,他可能有一个基于 make、scons 或 cmake 的构建系统。您可以使用 西格文 在 Windows 上安装标准 Unix 工具链,包括 gcc、make、flex、bison 和所有其他 Unix 好东西。scons 和 cmake 有本机版本,但它们会尝试使用 VS,所以这对您没有帮助。我还没有尝试通过 Cygwin 安装它们,看看这是否会强制它们使用 gcc,但这可能与您无关。

创建一个使用 VS 编译器的 make 系统是可能的,但很痛苦(曾经做过)。还有一个不同的问题。;)

然后,您可以使用特殊的构建步骤从 VS 内部运行 gcc 编译。最好有一个单独的构建目标(如调试和发布),并且您可以在项目文件中创建它们(它们只是 ASCII 文件,请检查它们),但我还不够 VS 人员知道那是多么容易做到的。保持它最新会有点痛苦,您可能需要编写一个脚本来自动创建它。

我必须维护单独的 makefile 以便使用 gcc 进行编译。学习 make 需要一定的前期成本,但您将受益于对代码的深入了解以及 VS C++ 和 gcc 之间的差异。当我这样做时,我使用的是 VC 6,所以现在使用 VS 2005 可能有更好的方法。

尝试 Cygwin,只要正确设置所有 Makefile,您始终可以尝试在 VS 和 GCC 上进行编译

这取决于您的项目文件的复杂程度:

你肯定需要一个像 cygwin 这样的 gcc 环境。

  • 对于小型项目或单个文件编译,您可以使用自定义构建工具(规则文件)

  • 对于大型项目/解决方案,我从 vcproj/sln 文件自动生成一个自动工具配置/makefile,并在 IDE 中对其进行编译。gcc 的源文件/警告和错误行被转换为 IDE 等效项(可在输出窗口中单击)。

想必您已经在使用 makefile 来构建您的项目,因为它是跨平台的。只需将您的 VS 项目设置为具有不同项目配置的 makefile 项目,这些项目配置会使用不同的参数来启动 makefile,以指示构建是针对 MSVC 还是针对 GCC。

如果您的 MSVC makefile 构建能够构建调试文件 (PDB)——它应该能够做到这一点,那么 VS 调试器也将无缝工作。

然后,在 Visual Studio 中使用 GCC 进行构建就像选择工具栏上的“GCC”配置下拉列表一样简单。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top