请详细说明cmake中的target_link_directories()原型,参数含义,作用以及如何使用
时间: 2024-03-17 18:39:51 浏览: 20
1. 原型
```
target_link_directories(target
[PRIVATE|PUBLIC|INTERFACE] directory1
[PRIVATE|PUBLIC|INTERFACE] directory2
...)
```
2. 参数含义
- `target`: 要添加库文件搜索路径的目标,可以是一个库或可执行文件;
- `directory`: 要添加的库文件搜索路径;
- `PRIVATE`、`PUBLIC`和`INTERFACE`是可选的关键字,用于指定这些搜索路径的可见性。
3. 作用
`target_link_directories()`用于向指定目标添加库文件的搜索路径。当使用`target_link_libraries()`函数添加链接库时,CMake会根据指定的库名在这些搜索路径下查找库文件。如果找到了对应的库文件,则会将其链接到目标中。
需要注意的是,`target_link_directories()`函数只影响链接时库文件的搜索路径,不会自动添加链接选项。如果库文件的名称不符合CMake的默认命名规则,还需要使用`target_link_libraries()`函数手动添加链接选项。
4. 如何使用
使用`target_link_directories()`函数很简单,只需要在CMakeLists.txt文件中的目标定义处调用即可。例如,下面的代码将目标`myexe`的搜索路径添加到`/usr/lib`和`/usr/local/lib`:
```
add_executable(myexe main.cpp)
target_link_directories(myexe PUBLIC /usr/lib /usr/local/lib)
target_link_libraries(myexe PRIVATE mylib)
```
上述代码中,`myexe`是一个可执行文件,`mylib`是一个库文件,`target_link_libraries()`函数将`mylib`链接到`myexe`中。由于使用了`PUBLIC`关键字,所以`myexe`目标依赖它的其他目标也会继承这些搜索路径。