VSCODE开发:task使用CMAKE编译、调试


Code Runner

安装好Code Runner之后,打开你所要运行的文件,有多种方式来快捷地运行你的代码:

键盘快捷键 Ctrl+Alt+N

快捷键 F1 调出 命令面板, 然后输入 Run Code    (和当前截屏重合)

在编辑区,右键选择 Run Code

在左侧的文件管理器,右键选择 Run Code

右上角的运行小三角按钮


注意:相应语言的编译器或者解释器还是需要自行安装的,并且把路径添加到PATH环境变量里


VSCODE


环境配置

这里的环境是设置vscode的运行环境,通过*.json文件来设置。

一旦生成了json文件,vscode就会在项目文件夹内生成一个隐藏的.vscode文件夹,其中包含所有产生的json文件。

命令面板是vscode快捷键的主要交互界面,可以使用f1或者Ctrl+Shift+P打开。输入C/Cpp: Edit configurations,就自动生成了一个c_cpp_properties.json文件,这样你就可以在该文件中编写参数来调整设置。

c_cpp_properties.json文件主要是设置系统级的大环境,基本上不用改(除非有第三方库,后面会说)


编译

编译C++文件方法可分为自定义编译和使用插件编译。

自定义编译

主要通过 设置任务(动作)来实现。

tasks.json文件相当于vscode的.sh或.bat文件,用来记录一系列操作的宏。


tasks.json设置编译

打开vscode控制台,输入Tasks: Configure Tasks,再选择Create tasks.json file from templates,选择Others模板,就自动生成了一个tasks.json文件,这样你就可以在该文件中编写参数来调整设置。

{

    // See https://go.microsoft.com/fwlink/?LinkId=733558

    // for the documentation about the tasks.json format

    "version": "2.0.0",

    "tasks": [

        {

            "label": "build1111", //你的设置文件名,可随便起

            "type": "shell", //运行task的平台,一般是shell

            "command": "bash ./build.sh", // 这里放指令,比如在此处就是普通的shell命令,运行你的.sh文件

            "group": {

                "kind": "build", //设置为build组,这样当你在vscode中执行build命令时,

                                //就能自动执行"command"中的命令了

                "isDefault": true

            }

        }

    ]

}


设置完“group”参数后,就能通过Tasks: Run Build Task (Ctrl+Shift+B)来运行该文件夹下的build.sh文件(也是你自己新建的)

一般地,build.sh可以写为:(其实就是把cmake的指令都放进去)

#!/bin/bash

if [ ! -d "build" ]; then

    mkdir build

else

    rm -rf build/*

fi

cd build

Local_Dir=$(cd "$(dirname "$0")"; pwd)

echo "Now work at Dir:$Local_Dir"

cmake ..

make

CMakeLists.txt文件内容如下(当然也可以根据你自己的需要改)

#项目名称

project(hello_word)

#源代码路径

aux_source_directory(. DIR_TOOT_SRCS)

#dubug 模式

set (CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} -g")

#生成可执行的文件

add_executable(hello_word ${DIR_TOOT_SRCS})


VSCODE开发:task使用CMAKE编译、调试_第1张图片
注意第三行的设置为debug模式(在这里如果不设置,出现无法调试,直接执行结束)


VSCODE+CMAKE联合编译 的实现

看workspace/invironment_test中的实现就好 

使用ctrl+shift+b完成编译



以上是vscode调用CMaker来编译C++代码,同样,vscode也能调用gcc来编译C++代码,如


{

    "version": "2.0.0",

    "tasks": [

        {

            "label": "build hello world",

            "type": "shell",

            "command": "g++", //改这里

            "args": [  //改这里

                "-g", "helloworld.cpp"

            ],

            "group": {

                "kind": "build",

                "isDefault": true

            }

        }

    ]

}


使用插件编译(推荐)


在Extensions中搜索”CMake, CMake Tools”,并Install。

下载之后的插件可以在设置中调整其设置。

点击Settings,再点击最上方的 Try a preview of our new settings editor,就能看到相关插件的设置了。

直接在控制台输入cmake quick start,然后在控制台输入项目名称 和 选定other的CMakeLists文件类别,

插件就能直接在项目文件夹路径下生成一个CMakeList文件,你可以自己编辑设置。

然后,按F7或Shirft+F7就能自动在项目文件夹下新建一个Build文件夹,并将生成目标放至Build文件夹下,非常方便!


调试

vscode自带调试模块,直接点击左侧边栏的Debug图标(Ctrl+Shirft+D),再点上方的齿轮图标configure,就能自动生成launch.json文件。

launch.json文件主要用来设置 如何调试

VSCODE开发:task使用CMAKE编译、调试_第2张图片
这里需要修改两处,12line设置为可执行文件路径+可执行文件名,另外17line一定要修改为false,否则无法调试,但也有说就保留为True的,暂时不清楚

可以再加一条 "preLaunchTask": "build1111"//可以新增一条   主要是做调试前的编译

基本上 program修改为 "${workspaceFolder}/a.out"就可以了


使用cmake编译时,添加外部依赖库

直接改CMakeLists.txt,添加相关外部库,具体方法就不说了。编译之后,cmaker才会在build文件下生成compile_commands.json文件。

例如调用OPENCV库:

修改CMakeLists.txt文件

cmake_minimum_required(VERSION 3.0.0)

project(opencvTest VERSION 0.1.0)             %取个名字

# 寻找OpenCV库

find_package( OpenCV REQUIRED )

# 添加头文件

include_directories( ${OpenCV_INCLUDE_DIRS} )

add_executable(opencvTest main.cpp)

set(CPACK_PROJECT_NAME ${PROJECT_NAME})

set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})

include(CPack)

# 链接OpenCV库

target_link_libraries( opencvTest ${OpenCV_LIBS} )

到这一步已经可以编译运行了

只是需要修改 c_cpp_properties.json文件中的"browse.path, includePath"添加你的库的头文件路径,这样就能获得头文件相关的提示了。(VSCODE中的代码提示)

{

    "configurations": [

        {

            "name": "Linux",

            "browse": {

                "path": [

                    "${workspaceFolder}",

                    "/usr/local/opencv/include/" //添加头文件路径

                ],

                "limitSymbolsToIncludedHeaders": true

            },

            "includePath": [

                "${workspaceFolder}",

                "/usr/local/opencv/include/" //添加头文件路径

            ],

            "defines": [],

            "compilerPath": "/usr/bin/gcc",

            "cStandard": "c11",

            "cppStandard": "c++17",

            "intelliSenseMode": "clang-x64",

            "compileCommands": "${workspaceFolder}/build/compile_commands.json" //添加cmaker生成的compile_commands.json

        }

    ],

    "version": 4

}

在c_cpp_properties.json文件中的添加"compileCommands"属性,并添加之前CMaker生成的compile_commands.json文件的相对路径,这样就能自动查看外部库的定义了。


Alt+Shift+F),vscode会根据你使用的语言,使用不同的插件进行格式化,记得要下载相应格式化的插件

f12跳到函数的定义处

Cmd+f12(win Ctrl+f12)跳转到函数的实现处

很多时候,除了要知道一个函数或者类的定义和实现以外,你可能还希望知道它们被谁引用了,以及在哪里被引用了。这时你只需要将光标移动到函数或者类上面,然后按下 Shift + F12,VS Code 就会打开一个引用列表和一个内嵌的编辑器。在这个引用列表里,你选中某个引用,VS Code 就会把这个引用附近的代码展示在这个内嵌的编辑器里。



你可能感兴趣的:(VSCODE开发:task使用CMAKE编译、调试)