I have hopefully a simple question regarding calculating the roll of a camera.

I can calculate the yaw and pitch just fine using GLM:
Code :
CameraAxis = glm::cross(DirectionOfWhereCameraIsFacing, DirectionOfUpForPerson);
CameraQuatPitch = glm::angleAxis(CurrentCameraViewingSettings.Pitch, CameraAxis);
CameraQuatYaw = glm::angleAxis(CurrentCameraViewingSettings.Yaw, DirectionOfUpForPerson);

The first problem is calculating the roll of the camera. I tried this but my math is off as this doesn't work:

Code :
CameraQuatRoll = glm::angleAxis(CurrentCameraViewingSettings.Roll, CameraAxis);

This seems to me like another pitch calculation.

The second piece is accuratly combining the changed roll to find out where the camera is finally facing.

I do this for the yaw and pitch above by doing the following below:

Code :
CameraQuatBothPitchAndYaw = glm::cross(CameraQuatPitch, CameraQuatYaw);
CameraQuatBothPitchAndYaw = glm::normalize(CameraQuatBothPitchAndYaw);
DirectionOfWhereCameraIsFacing = glm::rotate(CameraQuatBothPitchAndYaw, DirectionOfWhereCameraIsFacing);

How do I also incorporate roll into this?

Thank you for your time.