本教程面向 Windows 用户,目标是用最少步骤搭好 C 语言环境,并能通过 CMake 管理项目。
选择方案
如果你是初学者或做课程作业,推荐方案三(MinGW-w64 + VS Code),轻量且通用。
- Dev-C++(简单但功能有限)
- Visual Studio(集成度高,体积较大)
- MinGW-w64 + VS Code(推荐)
- CLion(专业 C/C++ IDE)
下面以推荐方案为主,其他方案提供简要说明。
方案一:Dev-C++(可选)
推荐使用小熊猫改版的 Dev-C++。
下载:
http://royqh.net/redpandacpp/download/
安装完成后即可新建 C 项目并运行。
方案二:Visual Studio(可选)
下载并安装 Visual Studio Installer,选择 Community 版本即可。
安装时选择工作负荷:
使用 C++ 的桌面开发
安装完成后即可使用。
方案三:MinGW-w64 + VS Code(推荐)
1. 下载并解压 MinGW-w64
官方站点:
https://winlibs.com/
如果官网下载慢,可以使用网盘镜像:
- 123 云盘:
https://www.123865.com/s/JnJ5Vv-GWIMA?pwd=ONsx# - 百度网盘:
https://pan.baidu.com/s/1MY19qEViOL0W4qTfl3CKFA?pwd=pcae(提取码:pcae) - 夸克网盘:
https://pan.quark.cn/s/769ab8ff174c?pwd=dkm2(提取码:dkm2)
下载后解压,建议放在非中文路径,例如:
D:\mingw64
2. 配置环境变量
优先尝试解压目录下的脚本:
mingwvars.bat
如果脚本无效,手动把 bin 目录加入系统环境变量 Path:
D:\mingw64\bin
3. 验证安装
打开终端(PowerShell / CMD),输入:
gcc --version能看到版本信息说明配置成功。
4. 安装 VS Code(可选但推荐)
下载:
https://code.visualstudio.com/
建议安装扩展:
- C/C++(Microsoft)
- CMake Tools(Microsoft)
使用命令编译 C 程序
创建 main.c:
#include <stdio.h>
int main() { printf("Hello, World!\n"); return 0;}最基础编译并运行:
gcc main.c -o main.\main.exe使用 CMake 管理 C 项目
当项目变大时,推荐用 CMake 统一管理构建。
1. 项目结构示例
.├── CMakeLists.txt├── include│ └── Hello.h└── src ├── Hello.cpp └── main.cpp2. 编写 CMakeLists.txt
# 指定构建此项目所需的最小 CMake 版本为 3.20# 如果用户安装的 CMake 版本低于此版本,配置过程将报错并停止cmake_minimum_required(VERSION 3.20)
# 定义项目名称为 "hello_c",并指定主要编程语言为 C# 这行命令会初始化项目变量,如 CMAKE_C_COMPILER 等project(hello_c C)
# 添加一个可执行目标(即最终生成的程序),目标名为 "hello_c"# 该目标由源文件 src/main.c 编译而成# CMake 会自动处理编译和链接过程add_executable(hello_c src/main.c)
# 为目标 "hello_c" 设置头文件搜索路径(include 目录)# ${CMAKE_CURRENT_SOURCE_DIR} 表示当前 CMakeLists.txt 所在的目录# PRIVATE 表示这些头文件路径仅在当前目标内部有效,不会传递给依赖此目标的其他目标target_include_directories(hello_c PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)
# 设置目标 "hello_c" 的特定属性# 这里指定使用的 C 语言标准为 C11 (C_STANDARD 11)# C_STANDARD_REQUIRED YES 表示必须使用指定的标准,如果编译器不支持则报错set_target_properties(hello_c PROPERTIES C_STANDARD 11 C_STANDARD_REQUIRED YES)3. 典型 CMake 用法补充
添加多个源文件:
add_executable(hello_c src/main.c src/util.c)添加库并链接:
add_library(util STATIC src/util.c)target_link_libraries(hello_c PRIVATE util)添加编译选项与宏:
target_compile_options(hello_c PRIVATE -Wall -Wextra)target_compile_definitions(hello_c PRIVATE DEBUG)4. 构建与运行
在项目根目录执行:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debugcmake --build build运行可执行文件:
.\build\hello_c.exe5. 清理与重新生成
当 CMake 配置异常时,可以删除构建目录重新生成:
rmdir /s /q buildcmake -S . -B build在 VS Code 使用 CMake 初始化项目
主要方式(推荐):
File→Open Folder打开项目根目录。- 按下
Ctrl+Shift+P或F1,运行CMake: Quick Start(创建项目的主要方式)。 - 选择语言:
C。 - 输入项目名:例如
hello_c。 - 选择项目类型:
Executable(生成可执行文件)。 - 选择生成器:推荐
MinGW Makefiles或Ninja。 - 是否添加
CTest/CPack:按需选择(不需要就跳过)。 - 选择要包含在
CMakeLists.txt中的文件:勾选C语言源文件。 - 是否添加预设(Presets):可以先跳过,后续需要再添加。
CMake 会自动生成 CMakeLists.txt、main.c 和 build 目录,尽量减少手写配置。
补充说明:
CTest用于自动化测试,便于与 CI/CD 集成。CPack用于打包发布,生成可安装或可分发的安装包。
VS Code 调试工作流(CMake)
推荐使用 CMake Tools 集成调试:
- 确保
CMake: Build成功。 - 状态栏选择要调试的目标与变体(建议
Debug)。 - 点击
Debug按钮即可启动调试。
如果需要手动配置 launch.json:
{ "version": "0.2.0", "configurations": [ { "name": "Debug CMake Target", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/build/hello_c.exe", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb" } ]}调试建议:
- 使用
-DCMAKE_BUILD_TYPE=Debug生成调试符号。 - 确保
gdb位于PATH中(MinGW-w64 自带)。 - 如果断点不生效,先检查是否用的是 Debug 变体。
常见问题
提示 “gcc 不是内部或外部命令”
- 确认
bin目录已加入Path。 - 重新打开终端或重启系统后再试。
- 确认路径没有中文或空格。
CMake 找不到编译器
- 先确保
gcc --version可用。 - 关闭所有终端后重新打开再执行 CMake。
方案四:CLion(专业 IDE)
CLion 是 JetBrains 的 C/C++ IDE,内置 CMake 支持,现在非商业用途免费使用。
1. 下载与安装
官网下载:
https://www.jetbrains.com/clion/
安装完成后首次启动会提示选择工具链。
2. 配置工具链
CLion 需要编译器和调试器,推荐搭配前文的 MinGW-w64。
- 安装并配置 MinGW-w64(见“方案三”)。
- 打开 CLion,进入
Settings→Build, Execution, Deployment→Toolchains。 - 选择
MinGW,并确保C Compiler、C++ Compiler、Debugger指向你的 MinGW 目录。
常见的 MinGW 路径示例:
D:\mingw64\bin
3. 创建并运行项目
New Project选择C Executable。- 选择项目位置,CLion 会生成
CMakeLists.txt。 - 点击右上角运行按钮即可编译并运行。
4. 使用建议
- 如果提示找不到编译器,优先检查
Toolchains配置。 - 如果 CMake 报错,删除项目下的
cmake-build-*目录后重新加载。 - CLion 对 CMake 支持很好,建议后续项目统一使用 CMake 管理。
部分信息可能已经过时









