libcudacxx and CUB/Thrust all do per-header testing of including each public header in a TU and then compiling it. However, this infrastructure is currently not unified. They should be.