How to incremental build C++ within a merge-request

Dear all,
I am a Software Developer who is working on a huge code base. I am talking about several GB’s of source and header files for the project.

I have now the following use-case: When I set a merge request my GitLab-Runner builds everything and runs the corresponding tests, which takes in total around 2 hours. Now, I would like to have the following feauture: When every somebody again pushes commits into the branch that the request is based on, I ONLY want an incremental build instead of a complete new build. I tried it with cacheing but realized that this only works for carrying files from one stage of a pipeline to another and not from pipeline to pipeline.

Would be very great if you can help me here!