我正在创建一个非常大的项目(几千行),因此不想使用Notepad ++。使用集成开发环境会使它更容易。我有Microsoft Visual Studio的经验并且喜欢它。是否有一种简单的方法可以在Microsoft Visual Studio中使用Cygwin的GCC?
或者,除了NetBeans和Eclipse之外,是否还有其他适用于Windows的好的GCC IDE?(我非常讨厌这两个IDE)。
我正在创建一个非常大的项目(几千行),因此不想使用Notepad ++。使用集成开发环境会使它更容易。我有Microsoft Visual Studio的经验并且喜欢它。是否有一种简单的方法可以在Microsoft Visual Studio中使用Cygwin的GCC?
或者,除了NetBeans和Eclipse之外,是否还有其他适用于Windows的好的GCC IDE?(我非常讨厌这两个IDE)。
有几种方法可以实现:
Visual Studio 2005及更高版本将允许您注册自定义构建工具。它们告诉IDE如何将一种形式的文件(例如一个.cpp
文件)转换为另一种形式(例如一个.obj
文件)。
据我所知,至今没有人为GCC做过这件事。而且,自己做需要编写COM代码,这可能对于只有一个项目来说太深奥了。你必须有一个令人信服的理由来承担这个项目。
然后,您必须手动调整每个项目,告诉它使用自定义构建工具而不是默认的,因为您正在使用Visual C++已经知道的文件名扩展名(.cpp
,可能)。如果您尝试在从多个模块构建的单个可执行文件中混合使用VC++和g++编译器,您将遇到麻烦。
好处是,如果您想开始一个开源项目,这听起来对我来说是一个不错的选择。我预计您很快就会聚集大量用户群体。
启动Visual Studio,然后选择文件 > 新建项目。
在Visual C++部分中,选择Makefile项目
填写Makefile项目向导:
如果您已经根据项目名称命名了可执行文件,并且它位于Visual Studio期望找到它的位置,则可以保留输出(用于调试)字段不变。
除非你知道这些字段是什么并且知道为什么要更改它们,否则请勿更改。例如,你可以选择在“预处理器定义”行上传递-D
标志以获取单独的调试和发布输出。如果你知道你想要这样做,你也知道如何设置它,所以我不会在长篇回答中解释它。
对于发布构建,你将被问相同的一组问题。如果你想要进行单独的调试和发布构建,你需要在这里进行任何更改。
完成所有这些工作后,你仍然需要创建 Makefile
,并将 make.exe
添加到 PATH
中。尽管像调试与发布之间的问题一样丑陋,但深入探讨这个级别的细节会使答案偏题。
尽管看起来很麻烦,但这比创建自定义构建工具要容易。而且,你说你最终需要移植到Unix,因此你无论如何都需要那个 Makefile
。
你说你想在某个时间点将这个程序移植到Unix,但这并不意味着你现在必须在Windows上使用GCC。完全可以编写程序,使其能够在Windows的Visual C++和* ix系统的GCC / Makefiles下构建。
有几个工具可以使这个过程更容易。其中一个非常受欢迎的选择是CMake,它在较新版本的Visual Studio中作为安装时选项提供。还有许多其他替代工具,如SCons和Bakefile。
nmake
工具,并为使用gcc进行构建提供规则,无需查找第三方make。 - Ben Voigtnmake
编写的Makefile
(与Bell Labs nmake
相对)将无法在Unix上移植,正如OP所希望的那样。 MS nmake
像cmd.exe
一样解释命令,而POSIX make
默认使用/bin/sh
。因此,在* ix Makefile
中,“clean”目标中的rm
命令必须在nmake
的.mak
文件中更改为del
。除此之外,nmake
相对于已经占据了*ix世界的GNU和BSD make而言受到限制。此外,OP已经指定他正在使用Cygwin。 - Warren Young无法找到或打开PDB文件
。 - user2023370Clang
你可以使用Clang编译器与Visual Studio一起,以便将目标设置为Android、iOS和Windows。
如果你的目标是Android,则可以使用安卓NDK和工具链中提供的Clang/LLVM编译器来构建项目。同样地,Visual Studio也可以在Mac上运行Clang来构建针对iOS的项目。支持Android和iOS的功能包含在“使用C++开发移动应用程序”工作负载中。有关如何针对Android或iOS进行设置的更多信息,请查看我们标记为“Android”和“iOS”的帖子。
如果你的目标是Windows,则有几种选择:
GCC
如果你的项目针对Linux或Android,则可以考虑使用GCC。Visual Studio的C++ Android开发本地支持使用随安卓NDK一起提供的GCC构建项目,就像使用Clang那样。你也可以使用GCC来针对Linux进行目标设置-无论是远程还是本地使用Windows子系统for Linux。
请查看我们有关使用CMake进行Visual C++ Linux开发的帖子,以获取有关如何使用Visual Studio来针对GCC的Linux进行目标设置的更多信息。如果你特别想要针对WSL进行本地设置,请查看从Visual Studio针对WSL的目标设置。
来源:https://devblogs.microsoft.com/cppblog/use-any-c-compiler-with-visual-studio/
我来自未来。
我使用Visual Code在Win/Lin/Mac上持续调试一个C/C++工具链,并使用从Choclatey安装的MinGW。 (这是为了保持我的理智 - 安装GDB和GCC的方式任意)
我使用MS自己奇怪的JSON makefile运行了它,配合GCC、GDB和IntelliSense。 总有一天,某个人(你?)会编写Gradle或Python脚本来生成这些文件;现在文档中在线示例似乎可用。
看起来需要三种类型的JSON文件;