[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如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

利用Python打造一个Excel记账模板

《利用Python打造一个Excel记账模板》这篇文章主要为大家详细介绍了如何使用Python打造一个超实用的Excel记账模板,可以帮助大家高效管理财务,迈向财富自由之路,感兴趣的小伙伴快跟随小编一... 目录设置预算百分比超支标红预警记账模板功能介绍基础记账预算管理可视化分析摸鱼时间理财法碎片时间利用财

SpringBoot3.4配置校验新特性的用法详解

《SpringBoot3.4配置校验新特性的用法详解》SpringBoot3.4对配置校验支持进行了全面升级,这篇文章为大家详细介绍了一下它们的具体使用,文中的示例代码讲解详细,感兴趣的小伙伴可以参考... 目录基本用法示例定义配置类配置 application.yml注入使用嵌套对象与集合元素深度校验开发

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1