This text explains CMake target property modifiers and library type modifiers. For target attributes such as targetincludedirectories, targetlinklibraries, targetcompiledefinitions, targetcompileoptions, and targetsources, the modifiers PRIVATE (property used only in the target), PUBLIC (used in the target and its dependents), and INTERFACE (used only in dependents) control visibility. Additionally, for the addlibrary command, library types are defined with STATIC (static library), SHARED (dynamic library), MODULE (plugin library not linked), and INTERFACE (header-only library propagating properties). Note that INTERFACE appears in both contexts but has different meanings.
CMake Modifier Keywords
Target Attribute Modifiers
Static and Shared Library Keywords