> For the complete documentation index, see [llms.txt](https://www.learnros2.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.learnros2.com/ros/ros2-building-blocks/ros-workspace-and-package-layout.md).

# ROS Workspace and Package Layout

The layout below is a typical ROS2 workspace:

```
user:~/workspace/ros-projects/ros_ws_demo$ tree
.
├── build
├── install
├── log
└── src
    ├── package_A
    │   ├── CMakeLists.txt
    │   ├── launch
    │   ├── msg
    │   ├── package.xml
    │   └── src
    │       ├── program_1.cpp
    │       ├── program_2.cpp
    │       └── program_3.cpp
    └── package_B
        ├── CMakeLists.txt
        ├── launch
        ├── package.xml
        └── src
            ├── program_x.cpp
            └── program_y.cpp
```

**Terminology**

* \~/workspace/ros-projects/ros\_ws\_demo is the root of the workspace
* \~/workspace/ros-projects/ros\_ws\_demo/src/package\_A is the root of the package A
