Windows系统下C/C++ 环境搭建大全(VS2022+CLION+VSCODE+Eeclipse+Cmake+GoogleTest)一

1.概述:

在windows系统下,有很多的编译器,常用的有VS2022、CLION、MinGW, 而代码编辑器有VS2022、CLION 、VSCODE、Eclipse, 从前面的列举可以看到CLION VS2022 这些软件是编译器和代码编辑结合体,使用起来非常方便,但是如果用于商业开发就会需要付费,因此如果需要免费就会用VSCODE+MinGW 和 Eclipse+MinGW 这种组合。对于商业软件开发对于软件的正确性和健壮性都有严格的要求,因此需要单元测试,特性测试,全链路拉通测试,这些测试就经常需要googletest测试框架,因此又要和编译器、代码编辑器结合在一起,又出现了多种的组合。目前网上有很多的资料,但是都比较分散,希望通过我的学习和理解,将他们汇集起来方便大家查询。

2.环境搭建种类:

image

3.gitHub 加速软件:

在下载googletest 或者是 MingGW、eclipse 都会访问gitHub网站,这些网站可能存在访问失败,因此需要安装一下github加速软件,方便gitHub网站的访问。

3.1.软件安装:

3.1.1.进入微软商店:

image

3.1.2.找到该软件

image

3.1.3.加速 github

image

4.VS2022的下载和安装:

Visual Studio 2022 (VS2022) 是微软推出的一款功能强大的集成开发环境(IDE),广泛应用于 C++、C#、Python 等多种编程语言的开发。下面是梳理详细的下载和安装步骤。

4.1.访问官方下载页面:

访问 Visual Studio 官方网站https://visualstudio.microsoft.com/zh-hans/downloads/

4.2.选择版本:

推荐下载 Visual Studio 2022 Community(社区版),这个版本对于个人开发者、初学者和小型团队是完全免费。如果需要更多企业级功能,可以选择 Professional 或 Enterprise 版本(这些版本需要付费许可)
image

4.3.获取安装程序:

image

4.4.启动安装程序:

image

4.5.选择安装项目(这里只是C/C++):

image

4.6.安装完需要进行重启:

image

5.CLION的下载和安装:

CLion是JetBrains公司开发的跨平台C/C++集成开发环境,拥有智能代码补全、强大的调试工具和丰富的项目管理功能。

5.1.下载方式:

从JetBrains官网进行下载,https://www.jetbrains.com/clion/download/?section=windows
image

在ARM架构的Windows上安装CLion, 需要使用ARM64的版本,建议下载exe版本

5.2.安装流程:

按照下面步骤操作即可完成CLion的安装。

5.2.1.双击CLion安装包:

image

5.2.2.CLion安装向导界面,点击【下一步】继续:

image

5.2.3.设置CLion的安装路径:

image

5.2.4.设置安装选项:

image

5.2.5.确认安装信息并开始安装:

image

5.2.6.等待安装完成:

image

5.2.7.完成CLion安装

image

6.Eclipse的下载和安装:

Eclipse只是一个开发环境(IDE),它本身不包含C/C++编译器。要让Eclipse能够编译和运行C/C++代码,你需要单独安装一个编译器。
在Windows上,常见的免费编译器选择有:
MinGW:提供GCC编译器套件,相对轻量。
Cygwin:提供更完整的类Linux环境,包含大量工具,体积较大
对于在Windows下使用Eclipse进行C/C++开发,主要有两种方式:一是直接下载官方预配置好的专用版本,二是为现有的Eclipse安装CDT插件。同时,官方也提供了免安装的压缩包,非常方便。本章节只关注eclipse 编译器安装流动第8章。
总结下载的方式如下:
image

这里只介绍了最简单第二种方式,就是免安装的压缩文件。

6.1.下载免安装网址:https://www.eclipse.org/downloads/packages/release

image

6.2.选择C/C++ 开发这个版本

image
在Windows系统中,你可以通过 任务管理器 > 性能 选项卡查看CPU型号。如果显示的是Intel或AMD的处理器,就选择 x86_64;如果明确提到了骁龙(Snapdragon)或标明了ARM架构,则选择 AArch64。

如果是用于嵌入开发,可以选择
image

下载时可以选择镜像服务器,注意选择中国
image

6.3.下载后解压zip

eclipse-cpp-2025-09-R-win32-x86_64.zip

7.7.VSCode的下载和安装:

VSCode本身是一个编辑器,而不是一个集成开发环境(IDE)。它不自带任何语言的编译器或解释器(比如C++的GCC、Python的解释器等)。要编译和运行代码,下面只是介绍该软件的下载和安装。

7.1.**打开VSCode官网 **

https://code.visualstudio.com/
image

7.2.运行VSCode建立程序VSCodeUserSetup-x64-1.106.2

image

7.2.1. 点击一下步

image

7.2.2. 点击安装:

image

8.MingGW的下载和安装:

在介绍MingGW安装前,先进性了MingGW和Cygwin这两个编译器的区别:

8.1.MingGW和Cygwin的区别:

MinGW(Minimalist GNU for Windows)与Cygwin均是在Windows平台上广泛使用的经典开发工具,二者设计理念迥异,因而适用于不同的开发场景。

8.1.1.定义与目标

MinGW 是一个轻量级的Windows开发工具集,它提供了一套GNU工具(如GCC编译器)和头文件,其核心目标是让开发者能够直接在Windows环境下编写并编译C、C++等程序,并生成不依赖任何第三方运行时库的原生Windows可执行文件。它几乎支持所有Win32 API,致力于提供纯粹的Windows本地开发体验。
Cygwin 则致力于在Windows之上构建一个完整的类UNIX模拟环境。它通过一个名为cygwin1.dll的UNIX模拟层,提供了大量的POSIX API和Linux系统中常见的工具。其主要目标是让为UNIX/Linux编写的源代码,几乎无需修改就能在Windows上重新编译并运行,极大地便利了跨平台应用的移植与开发。

8.1.2.功能与组件

MinGW 的核心是GCC编译器套件以及Windows平台的C/C++运行时库。它专注于编译工作,如果程序仅使用标准C/C++库或Win32 API,使用MinGW编译是最佳选择。
Cygwin 提供了远不止编译器的完整UNIX环境,包括Shell、文件系统、进程管理等大量工具和系统调用。如果程序使用了POSIX API(如进程、信号等),则必须通过Cygwin进行编译。

8.1.3.依赖与兼容性

经 MinGW 编译的程序是标准的Windows可执行文件(如.exe),可以直接在任意Windows系统上运行,无需额外依赖。然而,由于其使用了Win32 API,此类源代码通常无法直接在Linux环境下编译通过。
经 Cygwin 编译的程序在运行时需要依赖其附带的cygwin1.dll文件。这个动态链接库充当了POSIX系统与Windows内核之间的翻译层。优点是,同一份源代码通常只需在Linux环境下重新编译,即可无缝移植运行。

8.1.4.适用场景

MinGW 更适合专注于Windows平台原生应用开发的开发者。它生成的程序运行效率高、依赖少,能深度集成于Windows环境。
Cygwin 则更适合需要在Windows下进行UNIX/Linux环境模拟的开发者,例如执行Shell脚本、使用UNIX工具链,或需要将Linux项目快速移植到Windows平台。

8.1.5.总结

总而言之,MinGW 的精髓在于“原生”,它让开发者能用GNU工具链生成纯粹的Windows程序;而 Cygwin 的精髓在于“兼容”,它在Windows内部创造了一个UNIX环境,以便运行和移植类UNIX软件。选择哪一个,完全取决于您的开发目标是追求Windows原生体验,还是需要UNIX环境的便利性。

8.2. MinGW-w64 下载与版本选择指南:

MinGW-w64 是一个用于创建原生Microsoft Windows应用程序的完整软件开发环境。要获取 MinGW-w64,您可以通过其官方网站或GitHub仓库等渠道下载。

1️⃣ 主要下载渠道
官方网站:访问 MinGW-w64 的官方网站 https://mingw-w64.org 获取官方发布版本。
image
注意选择Pre-build Toolchains
image

GitHub仓库:您也可以访问其 GitHub 镜像仓库(例如 https://github.com/mirror/mingw-w64.git)或其他提供预编译构建的页面来下载。
image

2️⃣ 版本选择详解
在GitHub的Releases页面,您通常会看到多个版本的MinGW-w64构建。选择合适的版本,通常需要了解以下选项的含义,它们决定了工具链的目标环境和特性:

选择维度 可选方案 方案解读与建议
系统架构 i686 / x86_64 i686 通常指32位系统;x86_64 指64位系统。根据您的目标系统位数选择。
线程模型 posix / win32 如果您开发的项目会使用C++标准库中的等相关功能,需要选择posix;否则通常可选win32。
异常处理 sjlj / seh / dwarf seh 性能较好,是64位环境的推荐选择;sjlj 兼容性更广,可用于32位环境;dwarf一般用于32位Unix-like系统。
运行时库 ucrt / msvcrt ucrt (Universal C Runtime) 是Windows 10及之后版本推荐的运行时,具有更好的C99支持;msvcrt 则用于兼容更旧的Windows版本。
3️⃣ 压缩格式选择
通常选择 .7z 格式,这种格式压缩率较高,可以节省下载时间和流量。下载后,您需要使用诸如7-Zip等解压软件进行解压。

4️⃣ 后续步骤
将解压后得到的 bin 目录路径(例如 C:\mingw64\bin)
image

添加到系统的 PATH 环境变量中:
image

打开命令提示符(cmd),输入 gcc -v 命令。如果成功显示GCC的版本信息,则表明MinGW-w64已经安装配置成功。
image

9.Cmake的下载和安装:

CMake 是一个开源、跨平台的工具系列,旨在构建、测试和打包软件。CMake 使用简单的独立配置文件来控制软件编译过程。与许多跨平台系统不同,CMake 旨在与原生构建环境结合使用。
1️⃣ 高度可扩展
其架构支持按需扩展,能够持续集成新功能与新平台,以满足日益复杂的构建需求。

2️⃣ 生成原生构建系统
能够生成标准的构建文件(如 Unix 的 Makefile)或原生 IDE 项目(如 Visual Studio 解决方案),从而直接编译源代码、创建库文件并构建可执行文件。

3️⃣ 支持复杂项目结构
可轻松管理具有复杂目录层次结构和多库依赖的大型应用程序,并支持从单一源代码树进行多种配置的并行构建。

4️⃣ 灵活的库构建
全面支持静态库与动态库的构建,为软件架构设计提供了充分的灵活性。

5️⃣ 集成图形化编辑器
能够生成缓存文件,可与 CMake 图形化界面编辑器无缝协作,极大提升了项目配置与管理的效率。

6️⃣ 处理高级依赖关系
能够优雅地处理必须先构建一个中间可执行文件来生成源代码,然后再将此代码编译并链接到最终应用程序中的复杂构建流程。

7️⃣ 统一的构建管理
通过单一的 CMakeLists.txt 配置文件,即可在不同操作系统和编译器上生成对应的原生构建环境,实现了“一次编写,处处构建”。

9.1. 下载cmake

1️⃣ 打开cmake官网 https://cmake.org/download/

2️⃣ 找到Windows安装包
image

9.2. 安装cmake流程

1️⃣ 双击下载的cmake-xxx-win64-x64.msi文件,点击Next
image

2️⃣ 勾选 I accept the terms in the License Agreement,然后点击Next
image

3️⃣ 必须勾选 Add CMake to the PATH environment variable(添加环境变量,否则后续需手动添加)Add CMake shortcut totheDesktop(在桌面添加快捷方式)可根据个人需求选择
image

4️⃣ 选择安装路径,可以选择默认路径,也可像我一样安装至D盘或E盘等非系统盘。
image

5️⃣ 点击Install开始安装
image

6️⃣ 点击Finish安装完成。
image

9.3. 验证cmake是否安装成功

1️⃣按Win+R,输入cmd,回车,然后输入:cmake --version
image

2️⃣如果 正确安装,会显示类似以下输出:
image

10.googleTest的下载和安装:

10.1 googletest 概述

GoogleTest 是由 Google 测试技术团队开发的一款强大测试框架,专为 C++/c 代码设计,具备出色的跨平台支持——无论您是在 Linux、Windows 还是 macOS 环境下工作,它都能为您提供一致的测试体验。
该框架用途广泛,不仅适用于单元测试,也能胜任集成测试、特性测试等多种测试场景。其核心价值在于,您所编写的测试用例可以被反复、自动化地执行,这一特性使其非常契合现代持续集成(CI)流程。
一个典型的应用场景是代码重构:假设您编写了一个函数,并为其设计了一套覆盖多种输入输出情况的测试用例。当其他开发者尝试重构该函数时,他们必须保证所有原有测试用例都能通过,才能认为重构在基本逻辑上没有引入回归问题。当然,通过测试并不意味着代码百分之百正确,但它为代码行为的正确性提供了关键保障,大大降低了修改引入未知错误的风险。

10.2 googletest 的核心功能:

1️⃣ 断言支持:通过丰富的断言宏(如 EXPECT_EQ、EXPECT_TRUE 等)验证测试结果。
2️⃣ 测试夹具:支持共享测试设置和清理代码,减少重复代码。
3️⃣ 参数化测试:允许使用不同参数运行相同的测试逻辑。
4️⃣ 死亡测试:验证程序是否按预期方式终止。
5️⃣ 跨平台支持:兼容多种操作系统。
6️⃣ 与构建工具集成:支持与 CMake 和 Bazel 等构建系统无缝集成。

10.3 googletest下载:

1️⃣ 从官网下载:https://github.com/google/googletest
官网给出了源代码和编译脚本,特别需要注意,编译器的约束The 1.17.x branch requires at least C++17.
image
2️⃣ 通过git 下载源代码
image
image

10.4 使用cmake进行编译

1️⃣ 需要注意的点:googletest要求CMake使用3.14以后版本,因为后面用到FetchContent_MakeAvailable()命令;
2️⃣ googletest要求使用C++14以后版本,才能成功编译;
3️⃣ 用MSVC预编译googletest得到的静态链接库文件(.lib),MinGW不能进行静态链接(MinGW支持.a). 需要在QT中使用MSVC编译器(即始终用同一种编译器),或者预编译得到动态链接库文件(.dll,MinGW也支持),亦或在自己项目中用源码编译googletest;
4️⃣ 预编译得到的库文件,x64 or x32, debug or release 配置,必须跟自己项目生成的目标保持一致.

10.4.1 使用cmake-gui 进行编译

10.4.1.1 使用MingGW 编译

1️⃣ 建立build目录:
需要注意build目录,可以分编译器,因为要看自己项目使用哪些编译器,googletest就用那个编译器进行编译
MingGW:
image

2️⃣ 配置cmake相关参数:
image
image
image
image
image

3️⃣ 用CLion 编译googletest 库
image
image
image
image

10.4.1.2 使用VS2022 编译

1️⃣ 建立build目录:
VS2022:
image

2️⃣ 配置cmake相关参数:
image
image
image

3️⃣ 用VS2022 编译googletest 库
image
image
image

11. GoogleTest 搭建的总体思想:

搭建GoogleTest环境的过程,正是上述设计思想的实践。其思想是:
1️⃣ 隔离与依赖管理
思想:将测试代码与业务代码清晰地分离开。测试代码依赖于业务代码和GoogleTest库。
体现:在项目中建立一个独立的目录(例如可以起test)来存放所有测试代码。使用现代的cmake构建系统来清晰地管理这种依赖关系。

2️⃣“链接时”集成
思想:将GoogleTest编译成一个库(静态库或动态库),然后让你的测试程序链接这个库。
体现:经典的cmake配置流程:
1.FetchContent或add_subdirectory获取googletest源码
2.target_link_libraries(your_test_target GTest::gtest_main)。gtest_main库提供了一个默认的main函数,让你无需自己编写。

12.VS2022+googleTest+Cmake环境搭建:

12.1 VS2022的cmake环境搭建:

Visual Studio 2022 版本 17.1 预览版 2 开始,如果顶级 CMakeLists.txt 存在于子文件夹中,而不是工作区根目录中,系统会提示你是否要启用 CMake 集成。
这里使用一个用例进行讲解,假设都这样一个目录:D:\hello_world,目录中内容如下
image
main.cpp

#include<iostream>
#include "foo.h"
int main()
{
     std::cout << "Hello World!\n";
    foo();
    return 0;
}

foo.h

void foo();

foo.cpp

#include <iostream>
#include "foo.h"
void foo()
{
    std::cout << "Hello World!\n";
}

12.1.1 使用vs2022 打开cmake 组织的project:

1️⃣通过选择打开本地文件夹:
image

2️⃣通过输出窗口判断cmake的配置阶段是否成功:
成功示例:
image

失败的示例:如果失败了需要你去修改相应的cmakelists.txt 文件:
image

3️⃣解决方案视图切换
image

4️⃣编译
image

13.CLION+googleTest+Cmake环境搭建:

13.1 CLION的cmake环境搭建:

CMake 是项目的"构建说明书",而 CLion 是"智能编辑器+构建执行器"。它们共同为 C/C++ 开发提供了高效、跨平台的解决方案,在CLion 中,你通常直接编辑 CMakeLists.txt 文件来管理项目配置,然后 CLion 会根据该文件重新加载项目。你也可以在 CLion 的图形界面中修改一些 CMake 选项,但最终这些更改都会反映到 CMakeLists.txt 文件中。需要注意的是,虽然 CLion 默认使用 CMake,但它也支持其他构建系统(如 Bazel、Gradle 等),但 CMake 是其中集成得最好的。

13.1.1 使用cmake进行配置和编译:

这里使用一个用例进行讲解,假设都这样一个目录:D:\hello_world,目录中内容如下
image
main.cpp

#include<iostream>
#include "foo.h"
int main()
{
     std::cout << "Hello World!\n";
    foo();
    return 0;
}

foo.h

void foo();

foo.cpp

#include <iostream>
#include "foo.h"
void foo()
{
    std::cout << "Hello World!\n";
}

13.1.1.1 通过cmake进行配置打开project:

image

13.1.1.2 通过Project Wizard进行窗口配置:

1️⃣ 配置版本类型:
image
2️⃣ 配置编译环境:
选择使用什么编译器进行编译:
image

ToolChain 配置:
image

选择makefile类型:
选定ToolChain,Generator范围是受限的
image

cmake 配置成功:
image

13.1.1.2 使用clion build 菜单进行编译:

image

14.VSCode+googleTest+Cmake+MingGW:

14.1 VSCode的cmake环境搭建:

14.1.1 VSCode 需要下载的cmake 插件:

主要有两款核心插件:CMake Tools和CMake Language Suppor。

14.1.2 使用cmake进行配置和编译:

这里使用一个用例进行讲解,假设都这样一个目录:D:\hello_world,目录中内容如下
image
main.cpp

#include<iostream>
#include "foo.h"
int main()
{
     std::cout << "Hello World!\n";
    foo();
    return 0;
}

foo.h

void foo();

foo.cpp

#include <iostream>
#include "foo.h"
void foo()
{
    std::cout << "Hello World!\n";
}

14.1.2.1 使用cmake进行配置:

  1. 使用Ctrl+Shitf+P
    image
  2. 选择相关编译器:
    1️⃣本次选择的:mingw64
    image
    2️⃣选择完成后,cmake会完成配置:
    image
    3️⃣选择完成后,cmake会完成build:
    image
    4️⃣cmake build成功后:
    image

14.2 VSCode的中使用googletest搭建测试环境:

参见系列文章2。

15.Eclipse+googleTest+Cmake+MingGW:

15.1 Eclipse的cmake环境搭建:

Eclipse的cmake环境搭建主要分成两步,第一步就是通过windows的命令窗口,生成eclispe project;第二步通过import命令打开该project。这里使用一个用例进行讲解,假设都这样一个目录:D:\hello_world,目录中内容如下
image
main.cpp

#include<iostream>
#include "foo.h"
int main()
{
     std::cout << "Hello World!\n";
    foo();
    return 0;
}

foo.h

void foo();

foo.cpp

#include <iostream>
#include "foo.h"
void foo()
{
    std::cout << "Hello World!\n";
}

1️⃣通过windows的命令窗口生成eclispe projec
image

2️⃣通过import命令打开该project:
image
image

3️⃣通过project菜单的build命令进编译:
image

posted @ 2025-11-22 09:43  退休人生  阅读(682)  评论(0)    收藏  举报