我的 C++ 代码有一个目录结构,如下所示:
| |->include |->src
我正在为我的代码编写一个 CMakeLists.txt 文件。我想了解include_directories和target_include_directoriesin之间的区别CMake。
include_directories
target_include_directories
CMake
它们的用法和添加我的包含文件路径之间有什么区别,我应该使用哪个?
include_directories(x/y)影响目录范围。此 CMakeList 中的所有目标,以及在其调用点之后添加的所有子目录中的目标,都会将路径x/y添加到它们的包含路径中。
include_directories(x/y)
x/y
target_include_directories(t x/y)具有目标范围——不会添加x/y到目标的包含路径中t。
target_include_directories(t x/y)
t
如果您的所有目标都使用相关的包含目录,则您需要前一个。如果路径特定于目标,或者您想要更好地控制路径的可见性,则需要后者。后者来自target_include_directories()支持PRIVATE,PUBLIC和INTERFACE限定词的事实。
target_include_directories()
PRIVATE
PUBLIC
INTERFACE