• VS2019+cmake 方式添加ffmpeg库文件,cmake添加lib文件dll文件,包含目录示例


    cmake_minimum_required(VERSION 3.10)
    project(${PROJECT_NAME} CXX)
    set(CMAKE_CXX_STANDARD 17)
    set(CMAKE_CXX_STANDARD_REQUIRED on)
    project(wfdb_demo)
    #设置ffmpeg路径,也可以是其他任意开发库的路径
    set(ffmpeg501 "D:/work/ffmpeg-5.0.1-full_build-shared/ffmpeg-5.0.1-full_build-shared")
    #设置ffmpeg包含目录和lib路径
     include_directories(${ffmpeg501}/include/)
     link_directories(${ffmpeg501}/lib/)

     #编译测试程序,只有一个main.cpp
     add_executable(main main.cpp) 

     #下面这段用法较为高级,是将指定目录下的所有dll文件复制到运行目录,
     #并更加release/debug,创建目录,需要指定的目录可以自行更改
     #PROJECT_BINARY_DIR 代表编译出来的exe所在的目录
     #本示例是将ffmpeg的文件复制到三个目录,
     #支持cmake和vs2019直接编译生成exe,vs2019打开生成后,会自动区分release 和debug目录。
     #也就是PROJECT_BINARY_DIR的值已经被分开了。
     
     #最后
     set(dll_src ${ffmpeg501}/bin/*.dll)

     FILE(GLOB Plugin_Runtime_Debug_DLL_FILES CONFIGURE_DEPENDS ${dll_src}) 
    FILE(GLOB Plugin_Runtime_Release_DLL_FILES CONFIGURE_DEPENDS ${dll_src}) 
    FILE(GLOB Plugin_Runtime_Debug_Resources_FILES CONFIGURE_DEPENDS ${dll_src}) 
    FILE(GLOB Plugin_Runtime_Release_Resources_FILES CONFIGURE_DEPENDS ${dll_src}) 
    add_custom_target(CopyRuntimeFiles  ALL 
      VERBATIM 
      COMMAND_EXPAND_LISTS 
      COMMAND ${CMAKE_COMMAND} -E 
      make_directory "${PROJECT_BINARY_DIR}/$<$<CONFIG:Release>:Release>$<$<CONFIG:Debug>:.//>/" 
      COMMAND ${CMAKE_COMMAND} -E 
      copy_if_different  
      "$<$<CONFIG:Release>:${Plugin_Runtime_Release_DLL_FILES}>"  
      "$<$<CONFIG:Debug>:${Plugin_Runtime_Debug_DLL_FILES}>" 
      "${PROJECT_BINARY_DIR}/"   
      COMMAND ${CMAKE_COMMAND} -E 
      make_directory "${PROJECT_BINARY_DIR}/" 
      COMMAND ${CMAKE_COMMAND} -E 
      copy_if_different  
      "$<$<CONFIG:Release>:${Plugin_Runtime_Release_Resources_FILES}>"  
      "$<$<CONFIG:Debug>:${Plugin_Runtime_Debug_Resources_FILES}>" 
      "${PROJECT_BINARY_DIR}/")
     

    总结,其实包含include和lib的方式和VS2019 sln方式编译的差不多,只是写入的地方不同。

    困扰许久的是如何配置dll的路径,许多文章都没写,最粗暴的方式就是手动复制到exe的所在的目录。

    想了想这种不太方便,所以用了cmake的复制文件的方法,动态复制到运行目录

    参考链接:

    CMake 复制文件方法_taosimin87的博客-CSDN博客_cmake 拷贝文件

  • 相关阅读:
    图像形态学操作
    【FPGA教程案例11】基于vivado核的除法器设计与实现
    RabbitMQ(六)死信队列
    第九章 进程和计划任务管理【☆】
    Xcode中App图标和APP名称的修改
    Jmeter(108)——Concurrency Thread Group
    C中的运算和数据类型
    CSDN竞赛第四期季军 解题思路及参赛经历分享
    【AI】第 1 章:你的深度学习之旅
    数据库系统概论学习 1 绪论
  • 原文地址:https://blog.csdn.net/zanglengyu/article/details/125526447