target_include_directories设定头文件目录时,需要用PRIVATE,INTERFACE,PUBLIC修饰符指定范围。
这三个修饰符的主要区别为:
PRIVATE:只有当前的targe会使用的头文件,不会导出到外面。
INTERFACE:当前的target不需要使用的头文件,但是需要导出到外面,供外面使用。
PUBLIC:当前target和外面都会使用的头文件。
举个例子进行说明:
程序目录结构为:
├── add_func
│ ├── CMakeLists.txt
│ ├── include
│ │ ├── interface
│ │ │ └── add_interface.h
│ │ ├── private
│ │ │ └── add_private.h
│ │ └── public
│ │ └── add_public.h
│ └── src
│ └── add.cpp
├── build
├── CMakeLists.txt
├── install
└── main.cpp
//a