link_directories 不生效
时间: 2024-05-13 14:19:12 浏览: 19
`link_directories` 是 CMake 的一个命令,用于指定编译器在链接阶段查找库文件时需要搜索的目录。但是,它并不会直接将这些路径添加到链接命令中,因此需要使用 `target_link_libraries` 命令来链接库文件。
如果 `link_directories` 命令没有生效,可能有以下几种原因:
1. 在使用 `link_directories` 命令前,没有先定义要链接的目标文件,即没有使用 `add_executable` 或 `add_library` 命令定义要编译的可执行文件或库文件。
2. `link_directories` 命令指定的路径不正确,需要确保路径的正确性。可以使用绝对路径或相对路径,但是相对路径是相对于 CMakeLists.txt 文件所在的目录,而不是当前源文件所在的目录。
3. 在链接库文件时,没有使用 `target_link_libraries` 命令将库文件链接到目标文件中。
下面是一个示例,演示如何正确使用 `link_directories` 和 `target_link_libraries` 命令:
```cmake
# 定义要编译的可执行文件
add_executable(myapp main.cpp)
# 指定库文件所在的目录
link_directories(/path/to/libs)
# 将库文件链接到可执行文件中
target_link_libraries(myapp lib1 lib2)
```
其中 `/path/to/libs` 是库文件所在的目录,`lib1` 和 `lib2` 是要链接的库文件名。注意,库文件名可以省略前缀 `lib` 和后缀 `.a` 或 `.so`。例如,如果要链接 `libmylib.a`,可以写成 `mylib`。