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