美文网首页
VSCODE开发:task使用CMAKE编译、调试

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

作者: 循梦渡 | 来源:发表于2020-12-04 09:53 被阅读0次


    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})

    注意第三行的设置为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文件主要用来设置 如何调试

    这里需要修改两处,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编译、调试

          本文链接:https://www.haomeiwen.com/subject/kugqgctx.html