This seems like a good solution. I wasn't sure if we'd have to do something like this. I was hoping that the `INTERNAL` flag would work around the need for this, but reading over the CMake docs, I see that's not what it means at all...

Now that I've actually taken time to read the documentation, another alternative seems like it would be to make this a `FUNCTION` instead of a `MACRO`, because functions define a new variable scope.

That being said, I think this is fine as it is... No need to change it.