ros2
build_system
ai_generated
true
Changes to launch files or config not reflected after rebuild with colcon --symlink-install
ID: ros2/colcon-symlink-install-stale-launch
85%Fix Rate
88%Confidence
3Evidence
2023-01-01First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| any | active | — | — | — |
Root Cause
--symlink-install creates symlinks for Python files and launch files but NOT for compiled C++ artifacts or generated files. Also, newly added files require a full rebuild to create the symlink. Deleted files leave stale symlinks.
genericWorkarounds
-
92% success Run 'colcon build --packages-select <pkg>' after adding new files
colcon build --symlink-install --packages-select my_package # rebuilds only the affected package
-
90% success Source install/setup.bash after every rebuild
source install/setup.bash # re-source after rebuild to pick up new packages and files
-
88% success For C++ changes, always run colcon build (symlink-install doesn't help for compiled code)
colcon build --packages-select my_cpp_pkg --cmake-args -DCMAKE_BUILD_TYPE=Release
Dead Ends
Common approaches that don't work:
-
Use --symlink-install and expect all file changes to be reflected automatically
85% fail
Only existing Python/launch files are symlinked. New files, CMakeLists.txt changes, and generated files require colcon build to update.
-
Delete install/ directory and rebuild to fix stale symlinks
72% fail
Works but is slow. You also need to delete build/ for some cases. A targeted rebuild of the affected package is faster.