在CMake中,find_library
命令用于查找库文件。默认情况下,find_library
会在以下路径中搜索库文件:
-
环境变量指定的路径:
CMAKE_LIBRARY_PATH
: 这是一个CMake特定的环境变量,可以手动设置来指定查找库的路径。LIBRARY_PATH
: 这是一个系统环境变量,通常由操作系统和编译器使用。
-
标准目录:
- 编译器的标准库目录(如
/usr/lib
,/usr/local/lib
等)。
- 编译器的标准库目录(如
-
项目目录:
- CMake脚本所在的目录及其子目录。
-
链接器搜索路径:
- 编译器的默认链接器搜索路径。
示例
假设你有一个名为 mylib
的库,并且你知道它位于 /path/to/libs
目录下,你可以使用 CMAKE_LIBRARY_PATH
环境变量来指定这个路径:
export CMAKE_LIBRARY_PATH=/path/to/libs
cmake ..
或者,你可以在CMakeLists.txt文件中直接设置:
set(CMAKE_LIBRARY_PATH "/path/to/libs")
自定义查找路径
如果你希望在特定目录中查找库,可以使用 HINTS
参数或 PATHS
参数来指定查找路径。例如:
find_library(MYLIB mylib PATHS /custom/path/to/libs)
使用 HINTS
参数
HINTS
参数允许你提供一些提示路径,CMake会优先在这些路径中查找库:
find_library(MYLIB mylib HINTS /custom/path/to/libs)
使用 PATHS
参数
PATHS
参数允许你指定多个查找路径,CMake会依次在这些路径中查找库:
find_library(MYLIB mylib PATHS /custom/path/to/libs1 /custom/path/to/libs2)
完整示例
假设你有一个库文件 mylib.so
,并且它位于 /custom/path/to/libs
目录下,你的CMakeLists.txt文件可能如下所示:
cmake_minimum_required(VERSION 3.0)
project(MyProject)
# 设置查找库的路径
set(CMAKE_LIBRARY_PATH "/custom/path/to/libs")
# 查找库
find_library(MYLIB mylib)
# 添加可执行文件
add_executable(MyExec main.cpp)
target_link_libraries(MyExec ${MYLIB})
通过上述配置,CMake将在指定的路径中查找 mylib
库,并在找到后将其链接到目标可执行文件 MyExec
。