Use variables or genexes with usage requirements?

I think I’d still prefer the genex approach myself. But rarely do I have platform-specific things like that in CMake (as I believe that is usually done in headers in the projects I’ve worked on). Compiler-specific things can’t be in headers and have to be in the usage interface.