include_directories和target_include_directorie两者的区别
时间: 2023-12-29 22:49:36 浏览: 190
PyPI 官网下载 | clean_directories-1.1.0-py3-none-any.whl
`include_directories` 和 `target_include_directories` 都是用于指定头文件的搜索路径,但是它们的作用范围不同。
`include_directories` 是用来指定全局的头文件搜索路径,它会影响到所有的目标(包括库和可执行文件)。它的语法如下:
```cmake
include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...])
```
其中 `AFTER|BEFORE` 表示添加路径的位置,`SYSTEM` 表示将路径视为系统路径(此时会禁用一些警告),`dir1`、`dir2` 等表示需要添加的路径。
而 `target_include_directories` 则是在目标级别上指定头文件搜索路径,它只会影响到当前目标。它的语法如下:
```cmake
target_include_directories(target-name [SYSTEM] [BEFORE|AFTER]
<INTERFACE|PUBLIC|PRIVATE> [items1...])
```
其中 `target-name` 表示目标名称,`SYSTEM` 和 `BEFORE|AFTER` 的含义同上,`INTERFACE|PUBLIC|PRIVATE` 则表示不同作用域。`INTERFACE` 表示只会影响到当前目标的依赖项,`PUBLIC` 则表示会影响到当前目标和依赖它的目标,`PRIVATE` 则表示只会影响到当前目标本身。
总之,`include_directories` 是全局的设置,而 `target_include_directories` 则是在目标级别上设置的,作用范围更加精细。
阅读全文