cmake:target_** 中的 PUBLIC,PRIVATE,INTERFACE

cmake:target_** 中的 PUBLIC,PRIVATE,INTERFACE

1. 指令说明

target_include_directories() :指定 目标 包含的头文件路径。 官方文档

target_link_libraries() :指定 目标 链接的库。 官方文档

target_compile_options() :指定 目标 的编译选项。 官方文档

目标 add_library() add_executable() 生成。

这三个指令类似,这里以 target_include_directories() 为例进行讲解。

2. 指令讲解

测试工程目录结构:

cmake-test/                 工程主目录,main.c 调用 libhello-world.so
├── CMakeLists.txt
├── hello-world             生成 libhello-world.so,调用 libhello.so 和 libworld.so
│   ├── CMakeLists.txt
│   ├── hello               生成 libhello.so 
│   │   ├── CMakeLists.txt
│   │   ├── hello.c
│   │   └── hello.h         libhello.so 对外的头文件
│   ├── hello_world.c
│   ├── hello_world.h       libhello-world.so 对外的头文件
│   └── world               生成 libworld.so
│       ├── CMakeLists.txt
│       ├── world.c
│       └── world.h         libworld.so 对外的头文件
└── main.c

调用关系:

                                 ├────libhello.so
可执行文件────libhello-world.so