Difference between PUBLIC and INTERFACE is not stated


I read cmake-compile-features(7) and I couldn’t find text saying the difference between PUBLIC and INTERFACE. I think Transitive Usage Requirements should be linked here to clarify this.

The docs for target_compile_features talk about this, and I feel like that’s the right place.

I agree it will be helpful to talk about it there in the section “Compile Feature Requirements”, although that section is not mainly for it (?) and it would repeat with “Transitive Usage Requirements”.

My understanding of INTERFACE is “you don’t need to use it, but it is needed when others use you”.

@adaldev So do you agree on explaining or linking it there? Could you give a clear answer?

Is it what you needed?

it’s also the same for target_compile_features by the way (just replace definition or dependency by feature)