创建文件夹
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运行程序