CMake target_link_libraries Interface Dependencies

后端 未结 3 499
攒了一身酷
攒了一身酷 2020-12-07 07:46

I am new to CMake and a bit confused with the PUBLIC, PRIVATE and INTERFACE keywords related to target_link_libraries(). Documentation mentions that they can be used to spec

3条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-12-07 08:25

    If you are creating a shared library and your source cpp files #include the headers of another library (Say, QtNetwork for example), but your header files don't include QtNetwork headers, then QtNetwork is a PRIVATE dependency.

    If your source files and your headers include the headers of another library, then it is a PUBLIC dependency.

    If your header files but not your source files include the headers of another library, then it is an INTERFACE dependency.

    Other build properties of PUBLIC and INTERFACE dependencies are propagated to consuming libraries. http://www.cmake.org/cmake/help/v3.0/manual/cmake-buildsystem.7.html#transitive-usage-requirements

提交回复
热议问题