CMake 中的 include_directories 和 target_include_directories 有什么区别?

新手上路,请多包涵

我的 C++ 代码有一个目录结构,如下所示:

 |
|->include
|->src

我正在为我的代码编写一个 CMakeLists.txt 文件。我想了解 include_directoriestarget_include_directoriesCMake 之间的区别。

它们的用法和添加我的包含文件路径之间有什么区别,我应该使用哪个?

原文由 Ujjwal Aryan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 868
1 个回答

include_directories(x/y) 影响目录范围。此 CMakeList 中的所有目标,以及在其调用点之后添加的所有子目录中的目标,都会将路径 x/y 添加到它们的包含路径中。

target_include_directories(t x/y) 具有目标范围——它将 x/y 添加到目标 t 的包含路径中。

如果您的所有目标都使用相关的包含目录,则您需要前一个。如果路径特定于目标,或者您想要更好地控制路径的可见性,则需要后者。 The latter comes from the fact that target_include_directories() supports the PRIVATE , PUBLIC , and INTERFACE qualifiers.

原文由 Angew is no longer proud of SO 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题