cmake 命令 链接动态库
时间: 2023-07-12 07:56:01 浏览: 91
在 CMake 中,链接动态库可以使用 `target_link_libraries` 命令。例如,假设你的项目需要链接名为 `mylib` 的动态库,你可以这样写:
```
add_executable(myapp main.cpp)
target_link_libraries(myapp mylib)
```
其中,`add_executable` 命令用于定义一个可执行文件 `myapp`,`target_link_libraries` 命令则用于将 `myapp` 链接到 `mylib` 动态库上。当执行 `myapp` 时,系统会自动加载 `mylib` 动态库并将其链接到 `myapp` 中。
如果 `mylib` 动态库不在系统默认的搜索路径中,你需要使用 `link_directories` 命令告诉 CMake 动态库的位置。例如:
```
link_directories(/path/to/mylib)
target_link_libraries(myapp mylib)
```
这样,CMake 就能够在 `/path/to/mylib` 目录中查找 `mylib` 动态库了。
相关问题
cmake 命令 链接动态库 在指定文件夹中寻找dll
在 CMake 中,如果你需要在指定的文件夹中寻找动态库,可以通过设置 `CMAKE_LIBRARY_PATH` 变量来实现。
假设你的动态库存放在 `/path/to/libs` 目录下,你可以在 CMakeLists.txt 文件中添加以下命令:
```
set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH}:/path/to/libs)
```
这样,CMake 就会在 `/path/to/libs` 目录下寻找动态库了。然后,你可以使用 `target_link_libraries` 命令来链接动态库,例如:
```
add_executable(myapp main.cpp)
target_link_libraries(myapp mylib)
```
其中,`mylib` 是你需要链接的动态库的名称。由于 `CMAKE_LIBRARY_PATH` 已经设置了动态库的搜索路径,CMake 就能够在 `/path/to/libs` 目录下找到 `mylib` 动态库了。
需要注意的是,如果你的动态库是 Windows 平台下的 .dll 文件,你需要将 `/path/to/libs` 目录添加到系统环境变量 `PATH` 中,或者在程序运行前手动将 `/path/to/libs` 目录添加到 `PATH` 中,这样 Windows 才能够正确地加载动态库。
cmake软链接动态库
在CMake中,可以使用`target_link_libraries`命令来链接动态库。下面是一个示例:
```cmake
cmake_minimum_required(VERSION 3.0)
project(MyProject)
# 添加可执行文件
add_executable(my_executable main.cpp)
# 添加动态库
find_library(my_library NAMES my_library PATHS /path/to/library)
# 链接动态库
target_link_libraries(my_executable ${my_library})
```
在上面的示例中,`find_library`命令用于查找动态库文件,`target_link_libraries`命令用于将动态库链接到可执行文件中。
另外,你也可以使用`find_package`命令来查找和链接动态库。这需要在项目的根目录下创建一个`Find<LibraryName>.cmake`文件,其中`<LibraryName>`是你要链接的动态库的名称。然后,在CMakeLists.txt文件中使用`find_package`命令来查找和链接动态库。
```cmake
cmake_minimum_required(VERSION 3.0)
project(MyProject)
# 添加可执行文件
add_executable(my_executable main.cpp)
# 查找和链接动态库
find_package(MyLibrary REQUIRED)
target_link_libraries(my_executable MyLibrary::MyLibrary)
```
请注意,上述示例中的`MyLibrary`是一个占位符,你需要将其替换为你要链接的动态库的名称。
阅读全文