[Toolschain cpp ros cmakelist python vscode] 记录写每次项目重复的设置和配置 不断更新

本文主要是介绍[Toolschain cpp ros cmakelist python vscode] 记录写每次项目重复的设置和配置 不断更新,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

写在前面

用以前的设置,快速配置项目,以防长久不用忘记,部分资料在资源文件里还没有整理

outline

  • cmakelist 复用
  • vscode 找到头文件
  • vscode debug
  • 现有代码直接关联远端git
  • ros杂记
  • repo 杂记
  • glog杂记

cmakelist 复用

包含了根据系统路径找库,debug,主动set库路径,单元测试用,和常用的加入头文件与源文件


cmake_minimum_required(VERSION 3.14.1)
project(project_osqp)
set( CMAKE_CXX_STANDARD 11 )
set( CMAKE_CXX_STANDARD_REQUIRED ON )
set( THREADS_PREFER_PTHREAD_FLAG ON )function(include_sub_directories_recursively root_dir)if (IS_DIRECTORY ${root_dir})include_directories(${root_dir})file(GLOB children RELATIVE ${root_dir} ${root_dir}/*)foreach(child ${children})if (IS_DIRECTORY ${root_dir}/${child})include_sub_directories_recursively(${root_dir}/${child})endif()endforeach()endif()
endfunction()function(aux_source_directory_recursively root_dir var_name)if(IS_DIRECTORY ${root_dir})aux_source_directory(${root_dir} TMP_SRC_LIST)set(${var_name} ${${var_name}} ${TMP_SRC_LIST} PARENT_SCOPE)file(GLOB children RELATIVE ${root_dir} ${root_dir}/*)foreach(child ${children})if(IS_DIRECTORY ${root_dir}/${child})aux_source_directory_recursively(${root_dir}/${child} ${var_name}) endif()endforeach()endif()
endfunction()find_package(Threads REQUIRED )
find_package(glog REQUIRED)
find_package(Eigen3 REQUIRED)set(GLOG_LIBRARIES "/usr/local/lib/libglog.so")message(STATUS "GLOG_INCLUDE_DIRS: ${GLOG_INCLUDE_DIRS}")
message(STATUS "GLOG_LIBRARIES: ${GLOG_LIBRARIES}")
message(STATUS "EIGEN3_INCLUDE_DIR: ${EIGEN3_INCLUDE_DIR}")set(CMAKE_BUILD_TYPE "Debug")
set(CMAKE_INCLUDE_CURRENT_DIR ON)# aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR} SRC_LIST)aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src/. SRC_LIST)#aux_source_directory_recursively(${CMAKE_CURRENT_SOURCE_DIR}/src SRC_LIST)
include_sub_directories_recursively(${CMAKE_CURRENT_SOURCE_DIR}/include)
include_sub_directories_recursively(${CMAKE_CURRENT_SOURCE_DIR}/src)##############################debug start##############################
get_property(include_dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)foreach(dir ${include_dirs})message("Include directory: ${dir}")
endforeach()message("Source files:")
foreach(file IN LISTS SRC_LIST)message("  ${file}")
endforeach()
#################################debug end####################################include_directories(${EIGEN3_INCLUDE_DIR})
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/libs)
add_executable(${PROJECT_NAME} ${SRC_LIST})
#add_library(${PROJECT_NAME} STATIC ${SRC_LIST}) # temp use 
target_include_directories(${PROJECT_NAME} PRIVATE ${GLOG_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} ${GLOG_LIBRARIES})
target_link_libraries(${PROJECT_NAME} ${EIGEN3_LIBRARIES})
target_link_libraries(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/libs/yaml-cpp/libyaml-cpp.a)#####################################unit test ###################################
# add_executable(unit_test_pathFW ${SRC_LIST}) 
# target_link_libraries( unit_test_pathFW
#                         ${GLOG_LIBRARIES}
#                         # ${CMAKE_CURRENT_SOURCE_DIR}/libs/yaml-cpp/libyaml-cpp.a
#                         ${CMAKE_CURRENT_SOURCE_DIR}/libs/yaml-cpp/libyaml-cpp.a
#                         # yaml-cpp
#                         )
#####################################unit test end#################################

备注:target_include_directories 用于为特定目标设置包含目录,而 include_directories 用于设置项目中所有目标的全局包含目录

vscode 找头文件

之前使用visual studio 感觉在这一点上 更方便,如果vscode 要配置一下 。
新建:c_cpp_properties.json 或者 ctrl +shift+ p在设置中查找 configuration (json),但也可以ui方式直接设置
在这里插入图片描述

{
"configurations": [
{
"browse": {
"databaseFilename": "${default}",
"limitSymbolsToIncludedHeaders": false
},
"includePath": [
"/home/kaifengqu/Desktop/H06CodeinROSEnv/devel/include/**",
"/opt/ros/noetic/include/**",
"/home/kaifengqu/Desktop/H06CodeinROSEnv/src/**",
"/usr/include/**"
],
"name": "ROS",
"intelliSenseMode": "gcc-x64",
"compilerPath": "/usr/bin/gcc",
"cStandard": "gnu11",
"cppStandard": "c++14"
}
],
"version": 4
}

vscode debug

{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "(gdb) 启动","type": "cppdbg","request": "launch","program": "${workspaceFolder}/build_t/project_MPtest
","args": [],"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": false,"MIMode": "gdb","setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "将反汇编风格设置为 Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}]}]
}
# 使用ros的方式
1 Vscode 安装ros插件 还是需要添加一下launch配置{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "ROS: Attach","type": "ros","request": "attach"}]
}
2设置断点,运行节点,回放数据
3使用调试与运行中 ROS Attach 查找ID 或进程名称,将可执行文件(NODE)附加到进程里。如果不是用ros(有一个问题无法暂停数据的播放)也要配置debuggdb
{
// 使用 IntelliSense 了解相关属性。 
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/project_PPconrtoller",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}]
}

现有代码直接关联远端git

echo "# Scripts" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:HerrQQ/Scripts.git
git push -u origin main

ros 杂记

脚本更改
rosrun pilot_controller modifyForRos.py 
分析工具rosrun plotjuggler plotjuggler
记录
rosbag record -O recorded_data -a
启动节点
roslaunch pilot_controller pilot_controller_ha1.launch 找节点关闭
pidof program_name pkill -f feishu回放
rqt_bag编译
catkin_make -j4 -DCMAKE_BUILD_TYPE=Debug

plotjuggler缺东西问题

使用sudo apt install ros-noetic-plotjuggler-ros一键安装plotjuggler及其ros插件

repo 杂记

https://blog.csdn.net/weixin_48120109/article/details/128272613 讲解repo具体用法
https://blog.csdn.net/KIK9973/article/details/118755045 haoyong nice to use

    1. 初始化: 使用 repo init 命令初始化 repo,在后面添加 -u 参数,并指明源的 URL。例如:
repo init -u https://android.googlesource.com/platform/manifest
可以添加 -b 参数来切换到不同的分支,比如 -b android-4.0.1_r1。
同步: 使用 repo sync 命令将所有相关的 git 仓库同步到本地。可以添加 仓库名 参数来单独同步某一个仓库,否则默认同步全部。例如:
repo sync
同步特定仓库:
repo sync project_name
查看状态:使用 repo status 命令来查看所有 git 仓库的状态。
开始工作: 在开始对任何仓库做出修改之前,建议先使用 repo start 创建一个新的分支:
repo start my_branch my_project
1. 提交: 分别在每个 git 仓库中添加和提交更改,然后使用 repo upload 上传更改。
更多关于 repo 使用的命令和详细说明,可以通过在控制台输入 repo -h 查看。

Glog杂记

google::InitGoogleLogging(argv[0]);
google::SetStderrLogging(google::GLOG_ERROR); 
FLAGS_colorlogtostderr = true;FLAGS_logtostderr = false;  // 将日志输出到日志文件FLAGS_minloglevel = 2;      // 设置最小日志级别为 ERRORFLAGS_log_dir = "/path/to/logs";  // 设置日志文件的输出目录

这篇关于[Toolschain cpp ros cmakelist python vscode] 记录写每次项目重复的设置和配置 不断更新的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/516855

相关文章

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Python Websockets库的使用指南

《PythonWebsockets库的使用指南》pythonwebsockets库是一个用于创建WebSocket服务器和客户端的Python库,它提供了一种简单的方式来实现实时通信,支持异步和同步... 目录一、WebSocket 简介二、python 的 websockets 库安装三、完整代码示例1.

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.