[windows 上使用 CMake]总结4——工程中引入动态库

6 篇文章 0 订阅
4 篇文章 0 订阅
本文以ffmpeg为例,介绍了如何下载动态库并将其放在相应位置,接着讲解了在CMake文件中配置头文件路径、设置库文件路径,以及遍历并链接库文件的过程,用于构建和执行多个demo程序。
摘要由CSDN通过智能技术生成

下载动态库

使用 ffmpeg 作为例子。下载地址
在这里插入图片描述

将动态库放到对应位置

在这里插入图片描述

修改 cmake 文件

cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
project(hello-world-01 LANGUAGES CXX)

include_directories(${PROJECT_SOURCE_DIR}/inc)
include_directories($PROJECT_SOURCE_DIR}/dep/include) # 添加头文件路径

set(ffmpeg_lib_dir ${PROJECT_SOURCE_DIR}/dep/lib) 
link_directories(${ffmpeg_lib_dir})	# 设置 lib 文件路径
file(GLOB ffmpeg_lib ${ffmpeg_lib}/*.lib) # 找到所有动态库

set(src_dir ${PROJECT_SOURCE_DIR}/src)
file(GLOB src_codes ${demo_dir}/*cpp)

set(demo_dir ${PROJECT_SOURCE_DIR}/demo)
file(GLOB demo_codes ${demo_dir}/*cpp)

foreach(demo ${demo_codes})
	get_filename_component(demo_base ${demo} NAME_WE)
	add_executable(${demo_basename} $demo} ${src_codes})
	target_link_libraries(${demo_basename} ${ffmpeg_lib}) # 链接库文件
endforeach()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
假设我们有一个动态库 `libfoo.so`,并且我们想在 C++ 代码使用它。下面是一个简单的示例: 首先,我们需要编一个 CMakeLists.txt 文件来指示 CMake 如何生成我们的可执行文件和链接我们的动态库。假设我们的源代码文件是 `main.cpp`,我们的动态库位于 `/path/to/libfoo.so`。我们可以这样编 CMakeLists.txt 文件: ```cmake cmake_minimum_required(VERSION 3.10) project(MyProject) # 添加可执行文件 add_executable(my_executable main.cpp) # 添加动态库目录和名称 link_directories(/path/to) target_link_libraries(my_executable foo) ``` 其,我们使用 `add_executable` 命令来创建一个名为 `my_executable` 的可执行文件,并将 `main.cpp` 添加为源文件。然后,我们使用 `link_directories` 命令来指定我们的动态库所在的目录,并使用 `target_link_libraries` 命令将动态库链接到我们的可执行文件。 接下来,我们需要在 C++ 代码包含动态库的头文件并使用的函数。假设我们的动态库定义了一个名为 `foo` 的函数,我们可以这样编 `main.cpp`: ```cpp #include <iostream> #include "foo.h" int main() { std::cout << foo() << std::endl; return 0; } ``` 在这个例子,我们包含了 `foo.h` 头文件并调用了 `foo` 函数,并将其输出到标准输出。 最后,我们可以使用以下命令来编译和运行我们的代码: ```bash mkdir build cd build cmake .. make ./my_executable ``` 这将生成一个名为 `my_executable` 的可执行文件,并将动态库链接到其。当我们运行可执行文件时,它将调用 `foo` 函数并将其输出到控制台。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值