小编典典

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

all

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

|
|->include
|->src

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

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


阅读 79

收藏
2022-06-30

共1个答案

小编典典

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

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

如果您的所有目标都使用相关的包含目录,则您需要前一个。如果路径特定于目标,或者您想要更好地控制路径的可见性,则需要后者。后者来自target_include_directories()支持PRIVATE,PUBLICINTERFACE限定词的事实。

2022-06-30