Vraag CMake target_link_libraries Interface Afhankelijkheden


Ik ben onbekend met CMAKE en een beetje verward met de PUBLIC-, PRIVATE- en INTERFACE-sleutelwoorden in verband met target_link_libraries. Documentatie vermeldt dat ze kunnen worden gebruikt om zowel de link-afhankelijkheden als de link-interface in één commando te specificeren.

Wat betekent link-afhankelijkheden en link-interface eigenlijk?


34
2017-09-25 11:52


oorsprong


antwoorden:


Als u een gedeelde bibliotheek maakt en uw bron-cpp-bestanden # de kopteksten van een andere bibliotheek bevatten (bijvoorbeeld Say, QtNetwork), maar uw headerbestanden geen QtNetwork-headers bevatten, is QtNetwork een PRIVATE afhankelijkheid.

Als uw bronbestanden en uw headers de headers van een andere bibliotheek bevatten, is dit een PUBLIC afhankelijkheid.

Als uw header-bestanden, maar niet uw bronbestanden de headers van een andere bibliotheek bevatten, dan is het een INTERFACE afhankelijkheid.

Andere build-eigenschappen van PUBLIC en INTERFACE afhankelijkheden worden doorgegeven aan consumerende bibliotheken. http://www.cmake.org/cmake/help/v3.0/manual/cmake-buildsystem.7.html#transitive-usage-requirements 


84
2017-09-25 12:16