VSCode在window使用cmake编译Debug调试

发布于:2024-05-23 ⋅ 阅读:(166) ⋅ 点赞:(0)

参考

【C/C++】在VSCode中配置C/C++环境(使用gdb和code-runner两种方式配置)

准备工具

安装VSCode编辑器

下载安装

下载VSCode编辑器

在这里插入图片描述

安装C/C++插件

在这里插入图片描述

安装MinGW-w64编译器:

MinGW-w64编译器官网

下载

在这里插入图片描述

注意:要下MinGW-w64版本,不要下成别的版本(比如MinGW-32)

安装

注意安装目录不要有空格或者特殊字符
在这里插入图片描述
安装完之后,在目录下会有bin目录会有所有程序,下图我是安装在D:/c/mingw64
在这里插入图片描述

配置环境变量

点击我的电脑-》属性-》环境变量设置
在这里插入图片描述
新建Path,选择增加刚刚安装的所有指令
在这里插入图片描述

测试

在任意位置打开cmd,输入gcc -v查看版本,说明安装成功
在这里插入图片描述

demo工程

新建文件夹demo

然后vscode直接打开
在这里插入图片描述

新建demo

配置CMakeLists.txt

cmake_minimum_required (VERSION 3.24)

project (Demo)

# 设置C编译器的调试选项
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g")
# 设置C++编译器的调试选项
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")

# 定义变量
if (BUILD_PLATFORM STREQUAL rv1126)
    message("this is rv1126 platform")

elseif (BUILD_PLATFORM STREQUAL window)
	message("this is window platform")

	
else()
    message("this is x64 platform")
	
endif()

# ************** 指定头文件目录 *********************** #
include_directories(${CMAKE_SOURCE_DIR}/src)
include_directories(${CMAKE_SOURCE_DIR}/src/log)
include_directories(${OpenCV_INCLUDE_DIRS})


file(GLOB_RECURSE HEADERS "${CMAKE_SOURCE_DIR}/src/*.h")


foreach(loop_var IN LISTS HEADERS)
    message("path: ${loop_var}")
endforeach()

file(GLOB_RECURSE SOURCES "${CMAKE_SOURCE_DIR}/src/*.cpp" "${CMAKE_SOURCE_DIR}/src/*.c")

foreach(loop_var IN LISTS SOURCES)
    message("SOURCES path: ${loop_var}")
endforeach()


add_executable(${PROJECT_NAME} ${SOURCES})

target_link_libraries(${PROJECT_NAME} )

配置编译build.bat

:: create dir
echo "start build ..."

set BUILD_DIR=build

md %BUILD_DIR%
md bin


cd %BUILD_DIR%

set GCC_COMPILER=D:/c/mingw64/bin/

:: 构建
cmake .. -DBUILD_PLATFORM=window -DCMAKE_MAKE_PROGRAM="D:/c/mingw64/bin/make.exe" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++


:: 安装
make -j4


执行编译

运行build.bat脚本执行编译
在这里插入图片描述

PS D:\workspace\c\demo> .\build.bat

D:\workspace\c\demo>echo "start build ..."
"start build ..."

D:\workspace\c\demo>set BUILD_DIR=build

D:\workspace\c\demo>md build
子目录或文件 build 已经存在。

D:\workspace\c\demo>md bin
子目录或文件 bin 已经存在。

D:\workspace\c\demo>cd build

D:\workspace\c\demo\build>set GCC_COMPILER=D:/c/mingw64/bin/

D:\workspace\c\demo\build>cmake .. -DBUILD_PLATFORM=window -DCMAKE_MAKE_PROGRAM="D:/c/mingw64/bin/make.exe" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++
CMake Error at CMakeLists.txt:45:
  Parse error.  Function missing ending ")".  End of file reached.


-- Configuring incomplete, errors occurred!

D:\workspace\c\demo\build>make -j4
make: *** No targets specified and no makefile found.  Stop.
PS D:\workspace\c\demo> .\build.bat

D:\workspace\c\demo>echo "start build ..."
"start build ..."

D:\workspace\c\demo>set BUILD_DIR=build

D:\workspace\c\demo>md build
子目录或文件 build 已经存在。

D:\workspace\c\demo>md bin
子目录或文件 bin 已经存在。

D:\workspace\c\demo>cd build

D:\workspace\c\demo\build>set GCC_COMPILER=D:/c/mingw64/bin/

D:\workspace\c\demo\build>cmake .. -DBUILD_PLATFORM=window -DCMAKE_MAKE_PROGRAM="D:/c/mingw64/bin/make.exe" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++
-- The C compiler identification is GNU 8.1.0
-- The CXX compiler identification is GNU 8.1.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: D:/c/mingw64/bin/gcc.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: D:/c/mingw64/bin/g++.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
this is window platform
path: D:/workspace/c/demo/src/log/log.h
SOURCES path: D:/workspace/c/demo/src/log/log.c
SOURCES path: D:/workspace/c/demo/src/main.c
-- Configuring done (7.2s)
-- Generating done (0.0s)
-- Build files have been written to: D:/workspace/c/demo/build

D:\workspace\c\demo\build>make -j4
[ 33%] Building C object CMakeFiles/Demo.dir/src/log/log.c.obj
[ 66%] Building C object CMakeFiles/Demo.dir/src/main.c.obj
[100%] Linking C executable Demo.exe
[100%] Built target Demo

说明编译成功

查看执行程序

上面编译成功之后会在build目录下生成执行程序Demo.exe
在这里插入图片描述

断点debug调试

配置调试文件

点击run-》run with debug,会提示创建launch.json
在这里插入图片描述
配置launch.json如下,制定执行程序目录,以及gdb路径

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "C/C++: g++.exe 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}\\build\\demo.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\c++\\mingw64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
            // ,"preLaunchTask": "C/C++: g++.exe 构建活动文件"}
    ]
}

点击调试

在代码中打断点
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到