VSCode使用Makefile管理工程

news/2024/7/8 6:23:14 标签: vscode, ide, 编辑器

        Visual Studio Code(VSCode) 是一个高度可定制的代码编辑器,支持广泛的编程语言和构建系统。通过使用 Makefile 和适当的扩展,可以轻松地使用 VSCode 来管理基于 Make 的项目。以下是详细步骤,帮助你在 VSCode 中使用 Makefile 进行项目开发和构建。

1. 安装必要的扩展

首先,请确保你安装了以下 VSCode 扩展:

  1. C/C++(由 Microsoft 提供)

    • 提供了对 C 和 C++ 代码的语法高亮、代码补全、调试支持等。
    • 你可以在 VSCode 内的扩展市场中搜索并安装 C/C++ 扩展。
  2. Makefile Tools

    • 为 Makefile 项目提供支持,包括任务运行和错误解析。
    • 在扩展市场中搜索并安装 Makefile Tools

2. 准备环境

确保你的系统已经安装了 make 工具。你可以使用以下命令来检查 make 是否已安装:

make --version

如果没有安装,需要根据操作系统进行安装:

  • Linux:使用包管理器安装,例如 sudo apt-get install build-essential
  • macOS:通过 Xcode 命令行工具安装,执行 xcode-select --install
  • Windows:可以使用 MinGW 或 Cygwin 提供的包管理器进行安装。

2.1. Windows 安装MinGW

  1. 下载 MinGW 安装程序。
  2. 添加 MinGW 的 bin 目录路径(例如 C:\MinGW\bin),确保它位于列表的开头或者是一个新行。

2.2. Windows 环境安装make工具

MinGW 安装过程中应已包含 Make 工具。如果未包含,可以通过以下步骤安装:

  1. 访问 ezwinports 下载 make-4.xx-without-guile-w32-bin.zip
  2. 解压到一个本地目录,例如 C:\MinGW\msys\1.0\bin
  3. 确保解压目录已添加到系统的 Path 环境变量中。

3. 创建或导入 Makefile 项目

在你的工作目录下创建或导入一个 Makefile 项目。确保项目结构大致如下:

my_project/
├── src/
│   └── main.c
├── include/
│   └── my_header.h
└── Makefile

示例 Makefile:

CC = gcc
CFLAGS = -I./include
DEPS = my_header.h
OBJ = main.o

%.o: ./src/%.c $(DEPS)
	$(CC) -c -o $@ $< $(CFLAGS)

my_program: $(OBJ)
	$(CC) -o $@ $^ $(CFLAGS)

4. 配置任务

VSCode 通过 tasks.json 文件来定义自定义任务,如构建、清理等。使用以下步骤配置 tasks.json

  1. 打开命令面板(按 Ctrl+Shift+P)。
  2. 输入 Tasks: Configure Task 并选择它。
  3. 选择 Create tasks.json file from template,然后选择 Others

将生成的 tasks.json 修改如下:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "make",
            "args": [],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": ["$gcc"],
            "detail": "Generated task"
        },
        {
            "label": "clean",
            "type": "shell",
            "command": "make",
            "args": ["clean"],
            "group": "build",
            "problemMatcher": []
        }
    ]
}

这个配置定义了两个任务:buildclean,其中 build 是默认构建任务,会通过 make 来执行。

5. 配置调试器

对于 C 或 C++ 项目,可以配置调试器以使用 GDB。步骤如下:

  1. 在左侧活动栏中点击调试图标。
  2. 点击 create a launch.json file 链接。
  3. 选择 C++ (GDB/LLDB)

添加或修改生成的 launch.json 如下:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/my_program",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build",
            "miDebuggerPath": "/usr/bin/gdb",  // 根据系统上的 GDB 路径调整
            "logging": {
                "engineLogging": true
            }
        }
    ]
}

6. 运行和调试

  • 构建项目: 按 Ctrl+Shift+B 来运行默认的构建任务,它将调用 make 来编译项目。

  • 调试项目: 按 F5 开始调试,会触发编译任务(如果需要),然后启动调试会话。

总结

通过这些步骤,可以使用 Makefile 在 VSCode 中高效地开发、构建和调试项目。VSCode 的扩展和配置使得这个过程高度灵活和自动化,减少了开发中的摩擦成本。


http://www.niftyadmin.cn/n/5536666.html

相关文章

软件测试面试200问【答案+文档】

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、B/S架构和C/S架构区别 B/S 只需要有操作系统和浏览器就行&#xff0c;可以实现跨平台&#x…

微信小程序 typescript 开发日历界面

1.界面代码 <view class"o-calendar"><view class"o-calendar-container" ><view class"o-calendar-titlebar"><view class"o-left_arrow" bind:tap"prevMonth">《</view>{{year}}年{{month…

蓝桥杯开发板STM32G431RBT6高阶HAL库学习FreeRtos——新建工程

一、介绍 ​ 蓝桥杯嵌入式使用的单片机是STM32G431RBT6&#xff0c;内核ARM Cortex - M4&#xff0c;MCUFPU&#xff0c;170MHz/213DMIPS&#xff0c;高达128KB Flash&#xff0c;32KB SRAM&#xff0c;其余的外设就不多介绍了&#xff0c;参照数据芯片数据手册 ​ CT117E-M4…

力扣206

题目 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1]示例 3&#xff1a; 输…

Hadoop权威指南-读书笔记-03-Hadoop分布式文件系统

Hadoop权威指南-读书笔记 记录一下读这本书的时候觉得有意思或者重要的点~ 还是老样子~挑重点记录哈&#x1f601;有兴趣的小伙伴可以去看看原著&#x1f60a; 第三章 Hadoop分布式文件系统 当数据集的大小超过一台独立的物理计算机的存储能力时&#xff0c;就有必要对它进行分…

【2024】LeetCode HOT 100——二分查找

目录 1. 搜索插入位置1.1 C++实现1.2 Python实现1.3 时空分析2. 搜索二维矩阵2.1 C++实现2.2 Python实现2.3 时空分析3. 在排序数组中查找元素的第一个和最后一个位置3.1 C++实现3.2 Python实现3.3 时空分析4. 搜索旋转排序数组4.1 C++实现4.2 Python实现4.3 时空分析5. 寻找旋…

使用tcpdump抓取本本机的所有icmp包

1、抓取本机所有icmp包 tcpdump -i any icmp -vv 图中上半部分&#xff0c;是源主机tmp179无法ping通目标主机192.168.10.79&#xff08;因为把该主机关机了&#xff09;的状态&#xff0c;注意看&#xff0c;其中有unreachable 图中下半部分&#xff0c;是源主机tmp179可以p…

【python】OpenCV—Aruco

文章目录 Detect ArucoGuess Aruco Type Detect Aruco 学习参考来自&#xff1a;OpenCV基础&#xff08;19&#xff09;使用 OpenCV 和 Python 检测 ArUco 标记 更多使用细节可以参考&#xff1a;【python】OpenCV—Color Correction 源码&#xff1a; 链接&#xff1a;http…