# ShareConfig
**Repository Path**: CDalezyb/share-config
## Basic Information
- **Project Name**: ShareConfig
- **Description**: ROS2 开发中遇到一个问题:有多个包需要读取一些相同的参数和配置,而且项目中还有一些共用的utils文件。这个项目通过设置一个base_config 包,将配置文件和公用的头文件放在这个包中,给其他pkg复用。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-12-03
- **Last Updated**: 2025-02-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Demo 背景
+ ROS2项目开发中存在以下需求:有多个包需要读取一些共同的配置项(以txt或者yaml形式存在),且依赖于一些公用的utils工具代码(C++ or Python)。
+ Solution: 创建一个 base_config 包来“存放” 配置文件和公用的头文件。
+ gitee address: [Gitee/CDale/ShareConfig](https://gitee.com/CDale/share-config)
# 项目文件结构介绍以及配置方法
## 1. **项目所有文件**
+ base_config 中存有配置文件和公用的头文件(示例为config1.txt和base_utils.hpp)
+ top 中使用 base_config 中的配置文件和头文件
+ 使用```git clone https://gitee.com/CDale/share-config.git```
## 2. **base_config配置**
1. CMakeLists
```cmake
install(DIRECTORY ConfigFiles DESTINATION share/${PROJECT_NAME})
# 头文件的install 方式和 ConfigFiles 以及launch 不同
# 并不安装到 share下, 而是安装到base_config的根目录下
# 这样才可以通过 find_package 和 include_directories 找到
install(DIRECTORY include DESTINATION )
# 这个也是
ament_export_include_directories(include)
```
## 3.**top** 使用方法
1. CMakeLists
```cmake
# 获取 base_config 包的安装路径
find_package(base_config REQUIRED)
include_directories(${base_config_INCLUDE_DIRS})
message("Include dirs: ${base_config_INCLUDE_DIRS}")
```
2. pack.xml 添加 base_config 依赖
3. launch 文件
```python
# get_package_share_directory 获取 base_config 在 install 文件夹下的路径
# os.path.join 寻找到 config1.txt 的绝对路径,并通过 parameter 传递给 ROS2 node
os.path.join(get_package_share_directory('base_config'),"ConfigFiles","config1.txt")
```