VScode中实现多文件的编译与Cmake的使用

当一个工程文件夹中存在多个.c文件时,vscode默认只能实现单个文件的编译。

方法一:通过命令行进行编译

gcc/g++ -o  [要生成的.exe可执行文件] [待编译的.c文件(以空格分开)]  -I [头文件的路径]

在终端中运行heap即可

方法二:当文件数量很多时使用cmake工具进行编译

1.首先在官网下载cmake,并添加对应路径到系统的环境变量中

2.在项目的文件夹中添加一个CMake文件叫做 CMakeLists.txt

3.对CMakeLists.txt进行编辑

project(HeapMake)
aux_source_directory(src SRC_SUB)
aux_source_directory(. SRC_CUR)
add_executable(heap ${SRC_SUB} ${SRC_CUR})
include_directories(include)

${变量名}:取变量的值

".":表示当前目录;".."表示上一级目录

由于两个源文件不在一个路径下,所以需要调用aux_source_directory(dir VAR)两次

project() :设置cmake的项目名称,参数可以随意指定
aux_source_directory(dir VAR): 搜索 dir 目录下所有的源文件,并将结果列表存储在变量 VAR 中
add_executable(target src): 指定使用源文件src,生成可执行程序 target 
include_directories(headDir): 设置包含的头文件目录   
   

4. ctrl+shift+p选择cmake配置

  同时生成了build文件夹

5.在终端中分别输入

cd build                                                           ->

cmake ..(对上一级目录中的文件进行编译)->

mingw32-make.exe(在之前要写入环境变量的那个路径中一定要有这个文件)

最后在build文件夹下生成了可执行文件.exe




关于调试部分tasks.json与launch.json中的一些解释

1.program: 要调试的可执行程序的路径,里边可以使用一些宏,宏的外部加 ${} 表示取值,即要执行的.exe文件的路径
2.${fileDirname}:当前这个文件所在目录的名字,launch.json 对应的目录名就是 .vscode
3.${fileBasenameNoExtension}:不带扩展名的文件名
4.${workspaceFolder}:工作区目录,就是该工程的项目所在的最大的文件夹的路径
5.preLaunchTask:调试项目前要执行的任务,C/C++: g++.exe 生成活动文件是tasks.json中的一个任务,通过执行这个任务生成了program对应的可执行文件

最后两个文件如下

tasks.josn:

{
    "version": "2.0.0",
    "options": {
        //进入到工作区目录,这里的"${workspaceFolder}/build/"相当于进入到HEAP/build/
        "cwd": "${workspaceFolder}/build/" 
        //组合起来就是 "cd HEAP/build"
    },

    "tasks": [
        {
            //该命令的标题
            "label": "cmake",
            "type": "shell",
            //命令
            "command": "cmake",
            //命令选项即参数
            "args": [
                ".."
            ]
            //组合起来就是"cmake .."
        },
        {
            //该命令的标题
            "label": "make",
            "group":{
                "kind":"build",
                "isDefault":true
            },
            "command": "mingw32-make.exe",
            "args":[
            ]
            //组合起来为"mingw32-make.exe"
        },
        {
            //该命令的标题
            "label":"Build my project",
            //这一条命令是执行"cmake"与"make"这两个标题对应的命令,以实现自动化编译
            "dependsOn":[
                "cmake",
                "make"                
            ]
        }
    ]
}

launch.json:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++.exe - 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            //由于在CMakeLists.txt中确定了可执行程序的名称为heap且默认生成在build路径下,所以在这需要指明所在路径
            "program": "${workspaceFolder}/build/heap.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "E:\\msys64\\ucrt64\\bin",
            "environment": [],
            "console": "externalTerminal",
            "MIMode": "gdb",
            "miDebuggerPath": "E:\\msys64\\ucrt64\\bin\\gdb.exe",//调试程序的路径
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            //这里的值与tasks.json中最后一个labal中的值一样
            "preLaunchTask": "Build my project"
        }
    ]
}

参考文章:链接: https://subingwen.cn/vscode/cpp-windows/ 作者: 苏丙榅

  • 23
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值