Ubuntu下利用VScode编译运行最简单的单个cpp文件工程

文件结构树

  • LKOpticlaFlow //工程文件夹
    • .vscode //控制程序的编译、运行
      • launch. json
      • tasks.json
      • build.sh
    • bin //可执行文件存放的文件夹
      • LKOpticlaFlow
    • build //cmake外部编译生成的文件都在这个文件夹中
    • main.cpp //主程序
    • CMakeLists.txt //cmake文件

launch. json
Ubuntu下利用VScode编译运行最简单的单个cpp文件工程

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "LKOpticlaFlow GDB",//配置名称,默认就行
            "type": "cppdbg", //配置类型,不要改
            "request": "launch",//请求配置类型,可以为launch(启动)和attach(附加)
            "program": "${workspaceFolder}/bin/LKOpticalFlow",//将要进行调试的可执行程序
            "args": [],//程序调试时需要传达的参数,没有就空着
            "stopAtEntry": false, //程序在程序入口处暂停,一般设为false
            "cwd": "${fileDirname}",//工作目录,一般为默认
            "environment": [],
            "externalConsole": false,//是否额外显示控制台窗口,false为不显示
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "echo"//调试会话开始前执行的任务,和task绑定的纽带
        }
    ]
}

launch只是运行和调试,而可执行文件的生成需要利用task.json!
菜单栏点击“终端”,选择“配置任务”,选择“others”
task.json

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "echo", //需要和launch里的"preLaunchTask": "echo"相对应,
            								//意思是,要执行launch的内容要先执行label为echo的任务
            "type": "shell",//task的类型为shell语言,这个和下面的command命令相对应
            "command": "bash .vscode/build.sh"//执行.vscode/build.sh这个shell脚本
        }
    ]
}

build.sh用来执行cmaked外部编译
cmake常用的命令可以参考我的另一篇文章
build.sh

!#bin/bash
mkdir build
cd build
cmake ..
make -j4
上一篇:【Android 逆向】Dalvik 函数抽取加壳 ( 类加载流程分析 | Class.cpp#findClassNoInit 函数 | DexFile.cpp#dexFindClass 函数分析 )


下一篇:c++ 类相互引用