当前位置: 首页 > news >正文

CMake 构建 C 语言项目(vscode)

之前都是clion的ide中使用,这次在vscode中进行使用,首先就是创建一个CMakeLists.txt,文件,把相应内容复制进去,然后就是主程序flab.c文件的编写,其他文件有就是写入,没有就是不用管,写好主程序后,创建一个build文件夹,所有的命令以及生成的临时文件都是在这里面执行

======================

📁 项目结构

项目根目录/ ├── CMakeLists.txt # CMake 配置文件 ├── flab.c # 主程序源文件 ├── include/ # 头文件目录 │ ├── flab.h # 主程序头文件 │ ├── utils.h # 工具函数头文件 │ └── config.h # 配置头文件 └── src/ # 源文件目录 └── utils.c # 工具函数实现

📝 1. CMakeLists.txt 配置文件

cmake_minimum_required(VERSION 3.10) project(cv1 LANGUAGES C) set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED ON) # 添加头文件搜索路径 include_directories(include) # 添加可执行文件及其源文件 add_executable(cv1 flab.c src/utils.c ) # 💡 备选方案:自动收集源文件(适合小型项目) # file(GLOB SOURCES "src/*.c") # add_executable(cv1 flab.c ${SOURCES})

🔨 2. 编译构建步骤

2.1 创建并进入构建目录

mkdir build && cd build

💡为什么要在 build 目录下构建?
保持项目根目录整洁,所有编译产生的临时文件都集中在 build 目录中。

2.2 生成构建文件

cmake ..

📌..的含义:表示上级目录,即项目根目录。CMake 会在上级目录中寻找CMakeLists.txt文件。

2.3 查看构建系统类型

执行cmake ..后,注意输出的第一行信息:

-- Building for: Ninja # ✅ 使用 Ninja 构建系统 # 或 -- Building for: Make # ✅ 使用 Make 构建系统

完整输出示例:

[build]# cmake .. -- Building for: Ninja -- The C compiler identification is GNU 16.1.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: D:/msys64/mingw64/bin/cc.exe - skipped -- Detecting C compile features -- Detecting C compile features - done -- Configuring done (2.7s) -- Generating done (0.1s) -- Build files have been written to: H:/codexxuexi/cplus/cLan/temp/cv1/build

🛠️ 3. 执行构建

根据构建系统类型选择对应的命令:

方式一:使用 Make(Linux/macOS 默认)

make

方式二:使用 Ninja(Windows/MSYS2 默认)

ninja

🪟 4. Windows 环境(MSYS2)安装 Ninja

如果你的系统提示ninja: command not found,需要通过 MSYS2 安装:

pacman -S ninja

📹 配置参考视频

MSYS2 环境配置教程

配置要点:

  1. 通过 MSYS2 安装 MinGW64 工具链

  2. mingw64/bin目录添加到系统环境变量PATH

  3. 验证安装:ninja --version


🚀 5. 运行程序

构建成功后,在build目录下运行生成的可执行文件:

# Windows ./cv1.exe # Linux/macOS ./cv1

📊 完整流程总结

# 1️⃣ 创建构建目录 mkdir build # 2️⃣ 进入构建目录 cd build # 3️⃣ 生成构建文件(.. 指向上级目录的 CMakeLists.txt) cmake .. # 4️⃣ 执行编译(根据构建系统选择) ninja # 或 make # 5️⃣ 运行程序 ./cv1 # Windows: ./cv1.exe

⚠️ 常见问题及解决

问题原因解决方案
cmake: command not found未安装 CMake安装 CMake:pacman -S cmake或下载安装包
ninja: command not found未安装 Ninja安装 Ninja:pacman -S ninja
make: command not found未安装 Make安装 Make:pacman -S make
编译器未找到MinGW 未配置mingw64/bin添加到系统 PATH

💡 小贴士

  1. 清理构建:删除build目录重新构建

    rm -rf build mkdir build && cd build cmake ..
  2. 指定构建类型

    cmake -DCMAKE_BUILD_TYPE=Debug .. # 调试模式 cmake -DCMAKE_BUILD_TYPE=Release .. # 发布模式
  3. 指定生成器(强制使用 Make):

    cmake -G "Unix Makefiles" ..

📚 相关资源

  • CMake 官方文档

  • Ninja 构建系统

  • MSYS2 官网

6.后续多程序编译的步骤:

CMakeLists.txt 配置文件内容增加:

# 最低cmake版本 cmake_minimum_required(VERSION 3.14) # 项目名(指定语言为C) project(cv1 LANGUAGES C) # 设置C语言标准(使用C11或C99,根据你的代码需求) set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED ON) # 生成可执行文件:程序名 源码文件 add_executable(cv1 flab.c) #第二个程序---新增内容 # 生成可执行文件:程序名 源码文件 add_executable(printfg printfg.c)

备注,然后在build文件的cmd命令下 继续 cmake.. ,ninja 最后生成exe文件

http://www.gsyq.cn/news/1588877.html

相关文章:

  • Collection 与 Map
  • 回归模型评估:从R²陷阱到业务对齐的实战指南
  • 云手机技术解析与实战:用 Python 远程操控云手机实现自动化挂机
  • 达梦数据库重启方法
  • 拦了百万次攻击还是被入侵?逐包核验揪出藏在流量里的3次“漏网之鱼”
  • Python毕设项目:基于 Python+Vue 的可视化数据购物管理系统设计与实现 基于 Python+Vue 的校园线上购物管理系统 (源码+文档,讲解、调试运行,定制等)
  • 从单调到惊艳:用Blue-Topaz主题彻底改造你的Obsidian笔记界面
  • 手写自编码器实战:从信息论到工业级异常检测
  • 鸿蒙进程模型与IPC机制详解
  • 线上投票工具的实用性
  • 2024十大AI落地论文实操指南:QLoRA、FlashAttention-3与StreamingLLM工程化落地
  • 130、 PCIE调试笔记:ARI这个“小开关”惹出的麻烦
  • Mistral Small 2409 实战指南:本地部署与 OpenHands 编程代理集成
  • 浅谈UDP协议
  • 在成本敏感型应用中,采用国产DD马达四轴转台替代进口谐波减速转台,其全生命周期的免维护成本和能效表现如何?
  • 捕蚊灯真的有用吗?室内灭蚊器哪个牌子好?2026精选高性价比灭蚊器汇总分享!任你选!
  • 智能测距 DLC-1 设备应用风电场 探测技术优化电缆运维作业效率
  • VMware ESXi 9.1 macOS Unlocker OEM BIOS 2.7 标准版和厂商定制版
  • 【编号332】(安徽省)滁州市基础地理矢量数据
  • 2026年AI模型接口中转站权威测评推荐榜单 全场景适配优质平台选购指南
  • 夹缝中的企业投融资部
  • 量子随机基准测试:原理、挑战与应用实践
  • 香港科技大学(广州) | 生命科学与生物学工程学域博士生录取开放日报名召集!
  • 2026深度实测GPT-5.5:编程能力跃升、幻觉砍半、多模态跨入“理解”时代,开发者如何选型?
  • 符号引擎+神经网络:数学AI推理范式的双轨突破
  • 哪一款灭蚊灯效果好?室内灭蚊灯哪个牌子好一点?2026年10款主流灭蚊灯综合实测,小白必看!
  • Input Leap:免费开源跨设备控制终极方案,一套键鼠操控多台电脑
  • Unreal Engine 5.8 全部新增功能总结
  • 从入门到精通:ImHex快捷键完全指南,二进制分析效率提升300%
  • Splash:带 HTTP API 的轻量级浏览器渲染服务