CheckCXXSourceCompiles retains policy behavior from first inclusion due to global include guard
If CheckCXXSourceCompiles/Runs is included from e.g. a subdirectory with an old policy set, later uses in the parent dir will still use the old behavior. This can be avoided by removing the include_guard from the CheckCXXSourceCompiles module so each inclusion redefines the macro with the correct policy. Alternatively, the workaround I'm using currently is to include the module before adding any subprojects, although I'm worried that this applies the new policies to subprojects which may not be forward-compatible.