Если вы создаете разделяемую библиотеку и ваши исходные файлы cpp # включают заголовки другой библиотеки (скажем, QtNetwork, например), но ваши файлы заголовков не включают заголовки QtNetwork, тогда QtNetwork является PRIVATE
зависимостью.
Если ваши исходные файлы и ваши заголовки включают заголовки другой библиотеки, то это PUBLIC
зависимость.
Если ваши файлы заголовков, но не исходные файлы, включают заголовки другой библиотеки, то это INTERFACE
зависимость.
Другие свойства сборки PUBLIC
и INTERFACE
зависимости распространяются на библиотеки-потребители. http://www.cmake.org/cmake/help/v3.0/manual/cmake-buildsystem.7.html#transitive-usage-requirements