Visual Studio Code配置Cygwin(cyggcc和mingw-w64-gcc) C/C++开发环境笔记

一、Visual Studio安装与插件

可以到官网下载 VS Code 并安装,推荐配置的插件有“ C/C++ ” ,“ Code Runner ”和中文简体扩展包,安装了 Extensions “C/C++” 后就可以使用 Ctrl + Shift + P 打开命令面板输入“ C/C++ :编辑配置(UI) ” 来配置 C/C++ 的编译设置了。

二、Cygwin安装与配置

2.1 安装
可以到官网下载 setup-x86_64.exe(64位版)安装 Cygwin,双击 setup-x86_64.exe,选择 Install From Internet,下一步,选择安装到的目录 Root Directory 和安装包存放目录 Local package Directory,选择网络连接设置,一般默认就可以,选择一个镜像站点,等待出现包选择( Select Package )界面,一般选择的包除了 Cygwin 的 base (基本包)外有
Visual Studio Code配置Cygwin(cyggcc和mingw-w64-gcc) C/C++开发环境笔记_第1张图片
这几个( Cygwin 默认帮你安装 base 系列,主要包括 Cygwin1.dll 、mintty Ternimal 以及一些 Linux 常用命令如 ls 等),其中 gcc-core、gcc-g++ 是以经 Cygwin1.dll 将 Windows 的 API 封装转换成 Linux 下 API 调用格式(即符合 POSIX 标准)的 C/C++ 编译器,而 mingw64-x86_64-gcc-core 和 mingw64-x86_64-gcc-g++ 是原生的支持 win32API 的编译器( mingw64-x86_64 开头的包都是为生成可运行于 windows 原生接口下的程序的工具),libstdc++6 是 GCC 版本的 C++ 标准库实现( Clang 版本的为 libc++ ),gdb 调试器,binutils二进制工具(如nm), make 和 cmake 工具也一般是必选的,这样可以使用 Makefile 或 cmakelists 来进行编译, git 版本管理工具,另外要选的是(涉及到 Windows 系统调用时)在这里插入图片描述
这两个包,包含了调用 win32API 或者实现 thread 标准库所需要的接口和实现。涉及到 win32API 的程序使用 mingw64 的编译器理论上比 gcc 要快些,因为 mingw64 编译是不需要调用 Cygwin1.dll 的转换的,而 Cygwin 中所使用的 mingw64 编译器是gcc官网
Visual Studio Code配置Cygwin(cyggcc和mingw-w64-gcc) C/C++开发环境笔记_第2张图片
中的 mingw-w64 项目,该项目的更新一般认为是比 MinGW 的要快些。其它的包可以按需安装。

Cygwin入门指南

2.2 配置环境变量
接下来是配置环境变量,右击此电脑——属性——高级系统设置——环境变量,可以选择用户环境变量或系统环境变量都可以,添加目录 X:\Cygwin\bin ,即添加 Cygwin 安装文件夹里的 bin 目录,其中主要 gcc、g++ 以及 mingw64 版本的 gcc、g++ 编译器;

另外,在需要使用 mingw64 版本的编译器时一般需要一些程序运行时的动态链接库,而这些 dll 文件并没有放在 Cygwin\bin 文件夹,而是放在了 X:\Cygwin\usr\x86_64-w64-mingw32\sys-root\mingw\bin 文件夹下,一般包括 libstdc++-6.dll(GCC 的 C++ 标准库实现),libgcc_s_seh-1.dll(C++异常处理实现)和 libwinpthread-1.dll(C++ thread线程库) 等 C++ 在 Windows 下常用库的实现,这个目录如果使用 mingw64 编译时一定要添加到环境变量中。

X:\Cygwin\Cygwin\usr\x86_64-w64-mingw32\sys-root\mingw\ 文件夹下有如下文件夹(应该与单独安装 mingw-w64 或 minGW 编译器类似):

bin : 用于存放可执行文件(通过包管理安装等),以及一些动态链接库(二进制)文件
etc : 自行安装或非系统主要的配置文件目录
include : 编写系统调用或者 C/C++ 标准库以及一些第三方库所需头文件
lib : 编写 C/C++ 程序的标准库或第三方库或系统调用必要的一些静态链接库文件
libexec : 目录下存放一些函数库、执行文件及连接文件
share : 独立与你计算机结构的数据,譬如,字典中的词。
ssl : ssl 连接的相关配置文件

在你安装基于mingw-w64 或 minGW(被 w64 兼容) 的第三方库时需要将第三方库的头文件、动态链接库文件以及静态链接库文件分别拷贝到如上的 include 、bin 和 lib 文件夹下,并且保证 X:\Cygwin\usr\x86_64-w64-mingw32\sys-root\mingw\ 文件夹被加入到系统变量中,另外,使用 Makefile 编译时需要使用 -L -l 参数手动将第三方库实现文件进行链接。

其它的一些头文件/库文件默认搜索文件夹:

  • gcc/g++ 或 cygwin-gcc/g++ 的主要头文件所在文件夹: X:\cygwin\usr\include
  • gcc/g++ 或 cygwin-gcc/g++ 的主要库文件的实现所在文件夹: X:\cygwin\lib
  • mingw-w64-gcc/g++ 的主要头文件所在文件夹: X:\cygwin\usr\x86_64-w64-mingw32\sys-root\mingw\include
  • mingw-w64-gcc/g++ 的主要库文件实现所在文件夹: X:\cygwin\usr\x86_64-w64-mingw32\sys-root\mingw\lib
  • 可以使用 gcc -xc -E -v - 命令查看 gcc 的头文件搜索路径,gcc -xc++ -E -v - 命令查看 C++ 头文件搜索路径。
    x86_64-w64-mingw32-gcc -xc(++) -E -v - 命令查看 gcc/g++ 的头文件搜索路径。
  • 可以使用 gcc -print-search-dirs 查看库文件搜索路径。
    这些路径可以通过修改 gcc/x86_64-w64-mingw32-gcc 的配置文件进行更改,这里不再细讲。
三、Visual Studio Code使用配置

使用 Visual Studio Code 打开一个文件夹作为工作区后,并建立一个新的 C/C++ 文件,(在安装了 C/C++ 扩展插件后)使用 Ctrl + Shift + P 可以打开命令面板,然后输入 C/C++:编辑配置(UI) 可以设置默认编译器,默认编译参数等,也可以使用 Linux 下常用的 Makefile 进行编译。

若使用 make 工具进行构建,则使用 Makefile 编译的模板为:

CC = x86_64-w64-mingw32-g++
# CC = g++
CPFLAGS = -mwindows
INCLUDE = -I./include           # 此时在./include 文件夹有需要包含的头文件
LIB = -L./lib -lsfml-window -lsfml-graphics -lsfml-system          # 这里用了一个第三方的SFML库的例子

TARGET = test.exe
OJBS = test.cpp

all:$(TARGET)

run:all
	.\$(TARGET)

$(TARGET):$(OJBS)
	$(CC) -o $@ $^ $(INCLUDE) $(LIB) $(CPFLAGS)

.PHONY=clean
clean:
	rm -f $(TARGET)

其中 x86_64-w64-mingw32-g++ 是位于 X:\Cygwin\bin 文件夹下的 mingw-w64 C++ 64 位编译器。

你可能感兴趣的:(语言,C++,Cygwin,VS,Code)