假设某工作空间目录如下:
catkin_ws/
├── src/
│ ├── CMakeLists.txt
│ ├── package.xml
│ ├── package_a/
│ │ ├── CMakeLists.txt
│ │ ├── package.xml
│ │ ├── include/
│ │ │ └── package_a/
│ │ │ └── a_header.h
│ │ ├── src/
│ │ │ ├── a_node.cpp
│ │ │ └── a_library.cpp
│ │ ├── launch/
│ │ │ └── a_launch_file.launch
│ │ └── msg/
│ │ └── AMessage.msg
│ └── package_b/
│ ├── CMakeLists.txt
│ ├── package.xml
│ ├── include/
│ │ └── package_b/
│ │ └── b_header.h
│ ├── src/
│ │ ├── b_node.cpp
│ │ └── b_library.cpp
│ ├── launch/
│ │ └── b_launch_file.launch
│ └── srv/
│ └── BService.srv
├── build/
│ ├── CMakeFiles/
│ ├── devel/
│ ├── my_package/
│ └── …
└── devel/
├── lib/
├── include/
├── share/
└── …
那么在 package_a的CMakeLists.txt中,CMAKE_SOURCE_DIR指的是catkin_ws/src,CMAKE_CURRENT_SOURCE_DIR指的是catkin_ws/src/package_a