The issue was target_compile_options(project1 PRIVATE /Zp).
I assume intellisense was expecting the next item to be passed to be the argument. As /Zp is the same as /Zp1 I had left it empty. Adding the argument of 1 has made the intellisense errors dissappear.