ubuntu下vscode+opencv3 编译 调试c++ json配置 cmakelists.txt配置

参考(感谢!):https://blog.youkuaiyun.com/u012435142/article/details/82952302

配置json

launch.json

{
    // 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": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/${fileBasenameNoExtension}.o",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "preLaunchTask": "build",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

注意:"preLaunchTask": "build",是默认launch.json中没有的,表示执行文件前需要的编译任务。具体的任务内容在task.json中定义。

task.json

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",

    "tasks": [
        {
           // "taskName": "echo",
            "label": "build",
            "type": "shell",
            "command": "/usr/bin/g++",
            "args":[
                "-g", "${file}","-o","${fileBasenameNoExtension}.o",
                "-I","/usr/local/include",
                "-I","/usr/local/include/opencv",
                "-I","/usr/local/include/opencv2",
                "-L","/usr/local/lib",
                "-l","opencv_core",
                "-l","opencv_highgui",
                "-l","opencv_imgproc",
                "-l","opencv_imgcodecs",
                "-l","opencv_video",
                "-l","opencv_videoio"
            ],

        }
    ]
}

“label”: “build"表示以下是名为build的任务配置 配合launch.json中的"preLaunchTask": "build",
“command”: “g++”,表示调用的编译器是g++
args表示command的命令,其中“-I”表示包含目录,”-L"表示库目录路径,"-l"表示库文件,根据需要的lib进行改动。

c_cpp_properties.json

如果opencv安装在了默认目录/usr/local,那么VScode会自动搜索该目录,实现opencv自动补全和智能提示;否则,需要配置c_cpp_properties.json文件,将includePath配置为opencv安装目录。

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/local/include",
                "/usr/local/include/opencv",
                "/usr/local/include/opencv2"
                
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64"
        }
    ],
    "version": 4
}

配置CMakeLists.txt

# cmake needs this line 要求的最低版本  
cmake_minimum_required(VERSION 2.8)  

# Define project name 定义工程名  
project(HullDetect)  

# Find OpenCV, you may need to set OpenCV_DIR variable  
# to the absolute path to the directory containing OpenCVConfig.cmake file  
# via the command line or GUI 自动查找库  
find_package(OpenCV REQUIRED)  

# Declare the executable target built from your sources 声明可执行目标文件及源文件  
add_executable(HullDetect HullDetect.cpp) # 目标文件,源文件0,源文件1,...  

# Link your application with OpenCV libraries 将目标文件与库链接  
target_link_libraries(HullDetect ${OpenCV_LIBS})   # 目标文件,库路径 

### 配置 VSCode 支持 OpenCV 的方法 #### 1. 安装必要的依赖项 为了在 Ubuntu 20.04配置 VSCode 并支持 OpenCV 开发环境,首先需要安装 OpenCV 及其相关依赖。可以通过以下命令完成安装: ```bash sudo apt update sudo apt install libopencv-dev python3-opencv ``` 这一步会自动下载并安装 OpenCV 库及其头文件[^3]。 --- #### 2. 添加 OpenCV 路径至动态链接器缓存 为了让系统能够识别 OpenCV 的共享库文件,需将其路径添加到系统的动态链接器缓存中。执行以下操作: 编辑 `/etc/ld.so.conf.d/opencv4.conf` 文件: ```bash sudo gedit /etc/ld.so.conf.d/opencv4.conf ``` 在该文件中添加如下内容(假设 OpenCV 已经被安装到了默认路径 `/usr/local/lib`): ``` /usr/local/lib ``` 保存后运行更新命令以使更改生效: ```bash sudo ldconfig ``` 此步骤确保了程序可以正确加载 OpenCV 动态库][^[^25]。 --- #### 3. 创建 CMakeLists.txt 文件用于编译项目 对于 C++ 开发者来说,在 VSCode使用 OpenCV 进行开发通常涉及通过 `CMake` 构建工具来管理项目的构建过程。创建一个简单的 `CMakeLists.txt` 文件作为示例: ```cmake cmake_minimum_required(VERSION 3.10) project(MyOpenCVProject LANGUAGES CXX) find_package(OpenCV REQUIRED) include_directories(${OpenCV_INCLUDE_DIRS}) add_executable(main main.cpp) target_link_libraries(main ${OpenCV_LIBS}) ``` 上述脚本定义了一个名为 `main` 的可执行目标,并将 OpenCV 头文件目录和库链接到该项目中[^1]。 --- #### 4. 设置 VSCode 的工作区配置 要让 VSCode 正确解析 OpenCV 的函数声明以及提供智能提示功能,需要设置好 `.vscode/c_cpp_properties.json` 和 `tasks.json` 文件。 ##### (a) 编辑 `c_cpp_properties.json` 这个 JSON 文件告诉 IntelliSense 如何查找包含的头文件位置。以下是模板内容: ```json { "configurations": [ { "name": "Linux", "includePath": [ "/usr/include/**", "/usr/local/include/**" ], "defines": [], "compilerPath": "/usr/bin/g++", "intelliSenseMode": "gcc-x64", "browse": { "path": [ "${workspaceFolder}", "/usr/include/", "/usr/local/include/" ] } } ], "version": 4 } ``` 这里指定了 OpenCV 的头文件所在的位置 `/usr/local/include`。 ##### (b) 编辑 `tasks.json` 这是用来描述如何调用外部工具链的任务配置文件。下面是一个基于前面提到的 CMakeLists.txt 执行构建的例子: ```json { "version": "2.0.0", "tasks": [ { "label": "build with cmake", "type": "shell", "command": "mkdir build && cd build && cmake .. && make", "group": { "kind": "build", "isDefault": true }, "problemMatcher": [] } ] } ``` 这样就可以一键触发整个工程的重新编译流程。 --- #### 5. 解决可能遇到的问题——Python 补全失效的情况 如果是在同一台机器上既做 Python 开发又做 C++ 开发,则可能会因为多个版本或者不同来源的 OpenCV 导致冲突现象发生。例如当存在 Miniconda 或 Anaconda 环境时,这些环境中预装有独立版本的 OpenCV 模块,它们可能导致 IDE 加载错误[^4]。 解决办法之一就是单独建立纯净虚拟环境专门服务于特定需求的应用场景;另一个则是调整 PATH 环境变量顺序优先指向官方发行版而非第三方扩展包所在的子目录结构下寻找资源实例化对象引用关系图谱等等复杂逻辑处理机制实现自动化部署方案设计思路分享给大家共同探讨学习进步成长之路越走越宽广! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值