For the last several years I've been developing my own C++(11) headers-only, platform independent, and bare-metal friendly library which defines ALL the messages used by u-blox 4/5/6/7/8 receivers. The UBX protocol is huge, and it is highly unlikely that any application will need to use all of them. My library allows cherry picking only limited number of messages required by the product being developed. My work also provides a GUI tool for visualizing the UBX protocol as well as exchanging the messages with the u-blox device over serial interface in case you have a dev board.
My work is hosted on github: https://github.com/arobenko/ublox
DISCLAIMER: I'm NOT u-blox employee and my work is not supported or affiliated with u-blox company. The definitions if the messages were developed in accordance with freely available UBX protocol specification.