cmake一个动态库链接另一个动态库的例子
时间: 2023-07-13 14:20:29 浏览: 118
下面是一个简单的示例,演示如何使用CMake构建一个动态库并链接到另一个动态库:
首先,创建一个名为“libfoo”的动态库,它依赖于另一个动态库“libbar”。在项目根目录下创建一个名为“CMakeLists.txt”的文件,并添加以下内容:
```
# 指定 CMake 最低版本号
cmake_minimum_required(VERSION 3.5)
# 设置项目名称
project(foo)
# 添加源文件
add_library(foo SHARED foo.cpp)
# 添加头文件搜索路径
include_directories(${CMAKE_SOURCE_DIR}/include)
# 添加链接库搜索路径
link_directories(${CMAKE_SOURCE_DIR}/lib)
# 链接 libbar 库
target_link_libraries(foo bar)
```
在同一目录下,创建一个名为“foo.cpp”的源文件,并包含所需的头文件和库:
```cpp
#include "foo.h"
#include "bar.h"
void foo()
{
bar();
}
```
现在,我们需要创建另一个名为“libbar”的动态库。同样,在项目根目录下创建一个名为“CMakeLists.txt”的文件,并添加以下内容:
```
# 指定 CMake 最低版本号
cmake_minimum_required(VERSION 3.5)
# 设置项目名称
project(bar)
# 添加源文件
add_library(bar SHARED bar.cpp)
# 添加头文件搜索路径
include_directories(${CMAKE_SOURCE_DIR}/include)
```
在同一目录下,创建一个名为“bar.cpp”的源文件,并包含所需的头文件:
```cpp
#include "bar.h"
void bar()
{
// Do something
}
```
最后,我们需要创建一个名为“include”的文件夹,并在其中包含所有所需的头文件。
现在,我们可以使用CMake来构建这些库。首先,创建一个名为“build”的文件夹,并在其中打开终端。然后运行以下命令:
```
cmake ..
make
```
这将在“build”文件夹中构建两个动态库:“libfoo.so”和“libbar.so”。
注意事项:
- 需要确保libbar.so文件存在于lib文件夹中,否则链接时会出现错误。
- 在实际项目中,可能需要添加更多的源文件和头文件,以及其他的链接库和选项。
阅读全文