Encapsulating compiler specific options in a separate file makes it easier to reason about what is going to happen on a specific qmake call. clang-msvc and msvc are separate because they don't support exactly the same compiler switches.