The original "cycle" problem is the old riddle: "Which came first, the
chicken or the egg?".
I've had my fair share of cyclic projects over the years, but I don't like them. The problem is that they're usually hard to get going initially when moved to a new machine - especially when you're trying to build from scratch, and because they feed each other, you may have to do a couple of passes before the builds stabilize and you get what you really want.
Usually out of the two mutually-dependent projects you an extract a third project that both depend on and eliminate the cyclic nature of the build process.
Sometimes you can construct a bootstrap project that's non-cyclic but can be used to get the cycles rolling. It may be a simplified version of one of the other 2 projects or a simplified consolidation of the 2.
Best bet, however, is to try and remove the cyclic nature, since - as I mentioned - cyclic projects are hard to get going, as well as hard to get going again if the process breaks. And they're harder for maintainers to understand.
The secret of how to be miserable is to constantly expect things are going to happen the way that they are "supposed" to happen.
You can have faith, which carries the understanding that you may be disappointed. Then there's being a willfully-blind idiot, which virtually guarantees it.