So there are two phases. CMake generates makefiles (or Visual Studio solutions or xcode projects), and then you build those with make, or MSBuild, etc.
During the CMake phase you can pass parameters to exclude particular applications from the build process. Here are the main properties: TOOL, TEST, GUI, EVMJIT, which will all be "on" by default, but can be turned off. For example, excluding EVMJIT means you don't need to have LLVM installed (but you will only get the interpreter, not the JIT). Excluding GUI means you won't get AlethZero or Mix, but also means you don't need Qt5 installed.
Then when it gets to the make phase, doing an unqualified "make" will build everything. You can also "make install". You can also build only specific applications, ie. "make eth", "make ethminer", "make mix".
Here's a big diagram of all the modules:
And the target diagram for how that will look after we finish the pending repo reorg (https://github.com/ethereum/webthree-umbrella/issues/251), which is being dry-run at https://github.com/bobsummerwill/cpp-ethereum/tree/merge_repos right now):