To use packages in your own workspace in ROS, you’ll have to source the setup file:

source ($your_catkin_ws)/devel/setup.*sh

But when you have multiple workspaces, which I do to keep things in order and separate the build process of each set of packages, sourcing one of the setup file will cause overlaying. There are some discussions on extending the package path rather than overlaying behavior on GitHub.

But basically you can make change of devel/_setup_util.py, search for CMAKE_PREFIX_PATH and change the following line (line 266 for me).

# environment at generation time
CMAKE_PREFIX_PATH = '($catkin_ws_A)/devel;($catkin_ws_B)/devel;/opt/ros/indigo'.split(';')
# prepend current workspace if not already part of CPP

You can add other workspace path into a single file, and do not have to source from multiple workspaces. This is apparently not the desired solution but solve the problem for me…