Why does catkin build not consistently do the same thing?
I have a large workspace of ROS1 packages that builds with catkin_make. Sometimes other people with the same workspace will build and find that their build fails with some missing dependency in a CMakeLists.txt somewhere. I understand that catkin_make does non-isolated builds - so whether or not a dependency is available to a package is dependent on the order that the packages happen to built so lots of CMakeLists.txt ommissions are masked.
I have tried building my workspace with catkin build
and found that it does expose a lot of build errors but it doesn't give me consistent builds. If I run it several times in succession, more and more of the packages will be successfully built. If I run catkin build && catkin clean
several times, different numbers of packages will be successfully built.
If packages are being built "in isolation" I would expect the same thing to happen each time I run catkin build
since the build order should be irrelevant? Clearly I am mistaken in this understanding so my question is:
What does packages being built "in isolation" mean? How is catkin build
different to catkin_make
?
Is there some way to build my packages that is determinstic/repeatable? So that I can have confidence that if it builds on one machine, it'll build on another?
even if I run catkin build --force-cmake && catkin clean
I get inconsistent results.
Please refrain from asking multiple questions in a single post.