I'm just going to throw a few things at you. I think you may be confusing yourself. I'd rename some of your variables like 'cameraTarget' should be 'cameraTargetPos' so you clearly identity a position VS a direction vector. It's important not to get those confused.
For rotation, you can just easily make a rotation matrix and multiply that by your viewMatrix.
I'm not familiar with the glm library, but I saw a glm::rotate function that I believe makes a rotation matrix. Then you can just do...
When I did this, I validated each step before moving on. The first thing I did was draw a visualization of a frustum from an object's point of view, then I could move my camera around and look at it. Then I split it into 4 cascades and again draw each frustum split on screen.
Once you have that, then you know that's working and can move on to the orthographic projection step (which I rendered into textures and drew those as quads on the screen to validate those).