对官网手册的解释做一下引用
https://catkin-tools.readthedocs.io/en/latest/migration.html
Important Distinctions between catkin_make and catkin build
Unlike catkin_make, the catkin command-line tool is not just a thin wrapper around a the cmake and make commands. The catkin build command builds each package in a workspace’s source space in isolation in order to prevent build-time cross-talk. As such, in its simplest use, catkin build behaves similarly to a parallelized version of catkin_make_isolated.While there are many more features in catkin_tools described in the rest of the documentation, this chapter provides details on how to switch from using catkin_make and catkin_make_isolated. This chapter does not describe advanced features that catkin_tools provides over catkin_make and catkin_make_isolated. For a quick overview of what you can do with catkin build, see the Cheat Sheet.
Implications of Isolation
Build isolation has the following implications for both catkin_make_isolated and catkin build:There is no “top-level” CMakeLists.txt file in the source space.
Each package in a catkin_tools workspace has its own isolated build space.
Packages built with catkin build can not access variables defined in other Catkin packages in the same workspace.
All targets in each of a package’s dependencies are guaranteed to have been built before the current package.
Packages do not need to define target dependencies on ROS messages built in other packages.
It passes the same CMake command line arguments to multiple packages.
Plain CMake packages can be built if they each have a package.xml file with the appropriate <build_type> tag.
Additional Differences with catkin build
In addition to the differences due to isolation, catkin build is also different from catkin_make_isolated in the following ways:It builds packages in parallel, using an internal job server to distribute load.
It puts products into hidden directories, and then symbolically links them into the devel space (by default).
It stores persistent configuration options in a .catkin_tools directory at the root of your workspace.
It passes --no-warn-unused-cli to the cmake command since not all packages accept the same CMake arguments.
It generates .catkin files where each source package is listed, individually, instead of just listing the source space for the workspace. This leads to similar ROS_PACKAGE_PATH variables which list each package source space.