CMakeListx.txt --- include_directories和target_include_directories命令

1. include_directories

语法

include_directories ([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...])

作用

将指定目录添加到编译器的头文件搜索路径之下,指定的目录被解释成当前源码路径的相对路径。

参数

默认情况下,include_directories命令会将目录添加到列表最后,可以通过命令设置CMAKE_INCLUDE_DIRECTORIES_BEFORE变量为ON来改变它默认行为,将目录添加到列表前面。也可以在每次调用include_directories命令时使用AFTER或BEFORE选项来指定是添加到列表的前面或者后面。如果使用SYSTEM选项,会把指定目录当成系统的搜索目录。该命令作用范围只在当前的CMakeLists.txt。

2.target_include_directories

语法

target_include_directories(<target> [SYSTEM] [AFTER|BEFORE]
  <INTERFACE|PUBLIC|PRIVATE> [items1...]
  [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])

作用

该命令可以指定目标(exe或者so文件)需要包含的头文件路径,命名为 < target > 的命令必须是由 add _ executable ()或 add _ library ()之类的命令创建的,并且不能是 ALIAS 目标。

参数

PUBLIC:对内对外都公开,可将头文件目录以及链接库传递给连接者,target对应的头文件、源文件都使用。
PRIVATE:对内公开,对外不公开,不可传递头文件目录以及链接库,target对应的源文件使用。
INTERFACE:对外公开,对内不公开,可传递头文件目录以及链接库,但内部不可使用头文件及连接库,只能接口传递,target对应的头文件使用。

原文链接:https://blog.csdn.net/qq_26849933/article/details/127131908

 

使用 include_directories导入的头文件路径是全局的,而使用 target_include_directories导入的头文件路径则是保存在target中,其它模块需要使用时,引入此target即可。

posted on 2024-05-04 14:30  林西索  阅读(21)  评论(0编辑  收藏  举报