当前位置: 首页 > news >正文

Ubuntu使用cmake和vscode开发自己的项目,引用自己的头文件和openCV

创建文件夹

mkdir my_proj

继续创建include 和 src文件夹,形成如下的目录结构

用vscode打开项目

创建add.h

#ifndef ADD_H
#define ADD_Hint add(int numA, int numB);#endif

add.cpp

#include "add.h"int add(int numA, int numB)
{return numA + numB;
}

main.cpp

#include <iostream>
#include "add.h"int main()
{std::cout << "numA + numB = " << add(10,20) <<std::endl;return 0;
}

形成这样的目录结构

在my_proj中创建CMakeLists.txt,写入如下内容

cmake_minimum_required(VERSION 2.8)project(test)set( CMAKE_BUILD_TYPE "Debug" )include_directories(./include)set(SRC_LIST ./src/add.cpp ./src/main.cpp)add_executable(main ${SRC_LIST})

BUILD_TYPR 设置为Debug可以打断点调试

在my_proj中创建build.sh,写入如下内容

mkdir build
cd build
cmake ..
make

修改build.sh文件的权限

chmod +x build.sh

运行build.sh

在build文件夹中,会生成一个main的可执行程序,将它的路径记下来

在vscode中ctrl+shift+d 创建一个launch.json,将刚才的main的可执行程序的路径复制到“program”:

{"version": "0.2.0","configurations": [{"name": "(gdb) Launch","type": "cppdbg","request": "launch","program": "/home/robotics/my_proj/build/main","args": [],"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": false,"MIMode": "gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "Set Disassembly Flavor to Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}]}]
}

c_cpp_properties.json这样写

{"configurations": [{"name": "linux-gcc-x64","includePath": ["${workspaceFolder}/**","${workspaceFolder}/include"],"compilerPath": "/usr/bin/gcc","cStandard": "${default}","cppStandard": "${default}","intelliSenseMode": "linux-gcc-x64","compilerArgs": [""]}],"version": 4
}

然后就可以打上断点调试了

如果想要引用openCV,CMakeLists.txt中这样写

find_package( OpenCV REQUIRED )
include_directories(./include
${OpenCV_INCLUDE_DIRS} 
)
target_link_libraries( main ${OpenCV_LIBS} )

vscode 中ctrl+shift+p创建task.json,写入如下内容

{"version": "2.0.0","tasks": [{"label": "build","type": "shell","command": "./build.sh","group": {"kind": "build","isDefault": true}}]
}

就可以在vscode中ctrl+shift+b 运行build.sh文件,不必在Terminal中运行了。

编译完成后按F5运行程序

http://www.lryc.cn/news/183538.html

相关文章:

  • 2) dataset, dataloader
  • 阿里云PolarDB自研数据库详细介绍_兼容MySQL、PostgreSQL和Oracle语法
  • [软件工具]opencv-svm快速训练助手教程解决opencv C++ SVM模型训练与分类实现任务支持C# python调用
  • 邮件注册(一)验证码发送
  • 【网络安全---sql注入(2)】如何通过SQL注入getshell?如何通过SQL注入读取文件或者数据库数据?一篇文章告诉你过程和原理。
  • 正点原子嵌入式linux驱动开发——TF-A移植
  • GB28181学习(六)——实时视音频点播(数据传输部分)
  • JMeter接口自动化测试(数据驱动)
  • 数据结构:二叉树(超详解析)
  • 【考研数学】高等数学第七模块 —— 曲线积分与曲面积分 | 4. 对坐标的曲面积分(第二类曲面积分)与场论初步
  • 使用Thrift实现跨语言RPC调用
  • 【QT5-程序控制电源-RS232-SCPI协议-上位机-基础样例【1】】
  • leetcode 1049. 最后一块石头的重量 II、494. 目标和、474. 一和零
  • Error string: Could not load library
  • pom.xml里的标签
  • 微服务部署的正确策略
  • C#中的数组探究与学习
  • 计算机网络八股
  • Waves 14混音特效插件合集mac/win
  • Python python-docx 使用教程
  • Mac上protobuf环境构建-java
  • CocosCreator3.8研究笔记(二十二)CocosCreator 动画系统-动画剪辑和动画组件介绍
  • 信看课堂-厘米GNSS定位
  • 2023CCPC网络赛(A E)
  • 使用 python 检测泛洪攻击的案例
  • SCROLLINFO scrollInfo; 2023/10/5 下午3:38:53
  • Python--控制台获取输入与正则表达式
  • 网络基础知识面试题1
  • JavaScript系列从入门到精通系列第十五篇:JavaScript中函数的实参介绍返回值介绍以及函数的立即执行
  • js中的原型链