CMake target_include_directories:我使用 PUBLIC、PRIVATE 还是 INTERFACE?

分享于2022年07月17日 c++ cmake 问答
【问题标题】:CMake target_include_directories:我使用 PUBLIC、PRIVATE 还是 INTERFACE?(CMake target_include_directories: Do I use PUBLIC, PRIVATE or INTERFACE?)
【发布时间】:2022-07-10 15:22:03
【问题描述】:

我有一个 CMake 库 add_library(helpers helpers.h) ,我想通过 target_include_directories 包含源文件。然后我必须在参数 PRIVATE PUBLIC INTERFACE 之间进行选择。

有什么区别?


【解决方案1】:
  1. PRIVATE :includes 只能由 helpers-library 本身使用。
  2. PUBLIC :helpers-library 本身和任何使用 helpers-library 的目标都可以使用包含,例如通过 target_link_libraries(MainApplication PUBLIC libhelpers)
  3. INTERFACE :helpers-library 不能使用包含,只能由使用 helpers-library 的目标使用。