3.16.2 forces unexepected forced includes globally in Visual Studio 2017.
Since updating to 3.16.2 our project no longer compiles with a project generated by CMake using generator "Visual Studio 15 2017 Win64". The problem is this: We've hand rolled precompiled headers, because when our project was set up that was not something CMake natively supported. Some of our files, which MUST be compiled and linked into the same target, MUST NOT use precompiled headers, so we disable the feature for those specific source files. Prior to 3.16.2 this worked fine. In 3.16.2 the projects all globally get polluted with this value in 'forced includes' "%(ForcedIncludeFiles)", which in turn means those files we have that MUST NOT use precompiled headers fail to build (because this value causes them to forcibly include the precompiled header). If I run CMake -G from the command line I can run all the vcxproj files thought sed to remove this corruption and fix everything, but that is not ideal because that means the ZERO_CHECK project in the VS solution, when it runs, will just bring that mess back without running my magic script to fix the mess (and there's no way to add a post build step to ZERO_CHECK to clean up the mess). The new built-in precompiled header support introduced in 3.16 does not work as an alternative fix here either; there's no way to disable precompiled header support for the specific files we need (or at least, the mechanism which works for the hand rolled solution doesn't work, but possibly for the same reason 3.16.2 causes all the problems in the first place). Also, there's no practical way for us to currently strip out those files for which we MUST disable pre-compiled headers. Right now our only practical solution is to tell our devsto NOT update CMake beyond 3.16.1 (and to not update our CI nodes) .