target_compilation_options moves to parent project

They’re called “usage requirements” and are populated via target_link_libraries calls. It is the same mechanism by which linking to a target with a target_include_directories(PUBLIC) will add -I flags for the headers to use the target, just for compile flags instead. Variables are scoped by directory and function, but usage requirements are scoped by target usage.