For me it looks like you want the engine as a library (I’d go for shared library, but you may want static one). The engine should have its own set of tests - don’t forget about those.
I’d make the engine, and the game separate projects, so that they can be built in isolation. Then you could use a superbuild pattern to build both projects together.
If later your engine should get some utility programs around it, you can add those to the “engine” project and make them link to the very same shared library, as your game.
Sorry for lack of details, but I have not enough time to describe more precise instructions.
(BTW: It’s not really a CMake problem - figuring out the right project structure is generally not an easy task)