Installing packages on BeagleBone


I have a question regarding SW package installation on the BeagleBone. Installing from repositories through opkg seems to work as expected but inevitably one requires a package not listed in those repositories sooner or later. My question is how to install such a package? My research so far leads me to believe there are two or three ways but I am in no way sure of this.

Downloading the source and going through the configure, make and install steps on the target. Probably not the preferred way to go, right?

Cross compilation on a host machine. So setting up the required toolchain, again retrieving the source of the package, performing a configure, make and install with the BeagleBoard set as the target machine. I guess my main question here is how are dependencies handled? The host doesn't know what is installed on the target and what not and cross compiling a package may turn into having to cross compile numerous other packages.
Does anyone know a good tutorial or guide on how to cross compile and install a sw package not in the opkg repositories on the BB?

I have a feeling that this is a flavor of point (2) above. The Yocto Project and its Bitbake tool with its configurations and recipes. Please correct me if I got this wrong but I see this as a cross compilation platform which also allows making complete Linux distribution images. In fact, all the material I was able to find on the web seems to only focus on how to build a full distribution. But could one also use it to only cross compile a piece of sw and make an opkg package of it to then put on the target machine where it would be installed using opkg? If this is possible, does anyone know of a tutorial which shows how to do this? And does it have any advantages over (2)?

Thank you.