cmake 包含动态库
时间: 2023-10-10 20:04:49 浏览: 72
在 CMake 中包含动态库可以使用 `find_library` 命令来查找动态库,然后使用 `target_link_libraries` 命令将其链接到目标库或可执行文件中。
例如,假设我们需要链接一个名为 `mylib` 的动态库到我们的可执行文件中,可以这样编写 CMakeLists.txt:
```
cmake_minimum_required(VERSION 3.0)
project(myproject)
# 查找动态库
find_library(MYLIB mylib)
# 添加可执行文件
add_executable(myexe main.cpp)
# 链接动态库
target_link_libraries(myexe ${MYLIB})
```
在上述代码中,`find_library` 命令会查找名为 `mylib` 的动态库,并将其路径保存到变量 `MYLIB` 中。然后,`target_link_libraries` 命令将 `MYLIB` 变量的值链接到 `myexe` 目标中。
需要注意的是,如果动态库不在系统默认的库搜索路径中,需要使用 `link_directories` 命令指定动态库所在的路径。例如:
```
link_directories(/path/to/mylib)
```
相关问题
cmake编译动态库
CMake是一个跨平台、开源的构建系统管理工具,它能帮助开发者生成各种类型的项目配置文件,包括用于构建动态链接库(DLL)的。以下是使用CMake编译动态库的基本步骤:
1. **初始化CMakeLists.txt**:首先,在你的项目根目录下创建一个名为`CMakeLists.txt`的文件,这是CMake配置的核心。
2. **添加项目类型**:
```cmake
project(MyDynamicLibrary CXX)
```
这里指定了这是一个C++项目,并且是动态库类型。
3. **设置源文件目录**:
```cmake
add_library(MyDynLib SHARED src/DynamicLib.cpp)
```
`add_library`命令告诉CMake你有一个共享库(SHARED表示动态库),并指定源文件位置。
4. **指定编译选项**:
```cmake
target_compile_options(MyDynLib PRIVATE -fPIC)
```
`-fPIC`标志告诉编译器生成的位置无关代码(Position Independent Code),这对于动态链接至关重要。
5. **链接依赖**:
如果有其他静态库或动态库需要链接到你的动态库,可以使用`target_link_libraries`命令。
6. **生成构建文件**:
```cmake
cmake_minimum_required(VERSION 3.10)
enable_language(CXX)
cmake_policy(SET CMP0091 NEW) # 针对某些CMake新特性启用兼容模式
cmake_generator(<your_generator>) # 替换为你的目标平台的构建工具,如Unix Makefiles, Ninja等
cmake . -DCMAKE_BUILD_TYPE=Release # 或者 Debug 等,配置构建类型
make # 或 ninja 进行编译
```
完成上述步骤后,运行`cmake`命令会生成特定平台的构建脚本(例如.makefile或者.ninja),接着执行`make`(或其他生成的构建工具)即可编译出动态库。
cmake 封装动态库
对于使用CMake封装动态库,你可以按照以下步骤进行操作:
1. 创建一个文件夹用于存放你的项目文件,并进入该文件夹。
2. 在该文件夹下创建一个CMakeLists.txt文件,用于配置CMake构建过程。
3. 在CMakeLists.txt中,使用`add_library()`命令来定义动态库。例如,如果你要创建一个名为"mylib"的动态库,可以像这样写:
```
add_library(mylib SHARED
source1.cpp
source2.cpp
)
```
4. 在`add_library()`命令后面,列出你的源文件,它们将被编译成动态库。
5. 如果你的库依赖于其他库,可以使用`target_link_libraries()`命令来链接它们。例如,如果你的库依赖于名为"otherlib"的库,可以像这样写:
```
target_link_libraries(mylib otherlib)
```
6. 在CMakeLists.txt中,你还可以根据需要添加其他的配置选项,例如编译标志、包含路径等。
7. 保存CMakeLists.txt并退出编辑器。
8. 打开终端并进入你的项目文件夹。
9. 运行以下命令来生成构建文件:
```
cmake .
```
10. 运行以下命令进行编译:
```
make
```
11. 编译完成后,你将在当前文件夹下生成一个动态库文件(通常是以.so为后缀的文件)。
现在,你已经成功地使用CMake封装了一个动态库。你可以在其他项目中使用这个库,并在需要的时候链接它。希望这能帮到你!如果有任何问题,请随时询问。
阅读全文