我的 C++ 代码有一个目录结构,如下所示:
|
|->include
|->src
我正在为我的代码编写一个 CMakeLists.txt 文件。我想了解 include_directories
和 target_include_directories
在 CMake
之间的区别。
它们的用法和添加我的包含文件路径之间有什么区别,我应该使用哪个?
原文由 Ujjwal Aryan 发布,翻译遵循 CC BY-SA 4.0 许可协议
我的 C++ 代码有一个目录结构,如下所示:
|
|->include
|->src
我正在为我的代码编写一个 CMakeLists.txt 文件。我想了解 include_directories
和 target_include_directories
在 CMake
之间的区别。
它们的用法和添加我的包含文件路径之间有什么区别,我应该使用哪个?
原文由 Ujjwal Aryan 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.5k 阅读
3 回答494 阅读✓ 已解决
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 thePRIVATE
,PUBLIC
, andINTERFACE
qualifiers.