美文网首页
如何通过cmake拷贝运行所需依赖库到install的bin/l

如何通过cmake拷贝运行所需依赖库到install的bin/l

作者: 生活简单些 | 来源:发表于2024-09-28 17:29 被阅读0次

在CMake工程里我们经常遇到下面集中情况:

  1. 在Linux C++工程里,当项目依赖三方库的情况下发布软件时候需要连通三方库的so文件一起发布。
find_package(OpenCV REQUIRED COMPONENTS core imgproc imgcodecs)
target_link_libraries(${PROJECT_NAME} PUBLIC ${OpenCV_LIBS})

install(
    FILES
        $<TARGET_SONAME_FILE:opencv_core>
        $<TARGET_SONAME_FILE:opencv_imgproc>
        $<TARGET_SONAME_FILE:opencv_highgui>
        $<TARGET_SONAME_FILE:opencv_imgcodecs>
    DESTINATION
        lib
)

需要注意的是Linux系统下用:通过TARGET_SONAME_FILE找so相关文件。

  1. 在Window C++工程里当项目依赖三方库的情况下运行exe需要三方库dll一同在bin目录下,否则会提示xxx.dll找不到。
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
        COMMAND ${CMAKE_COMMAND} -E copy_if_different
        $<TARGET_FILE:opencv_core> $<TARGET_FILE_DIR:${PROJECT_NAME}>
        $<TARGET_FILE:opencv_imgproc> $<TARGET_FILE_DIR:${PROJECT_NAME}>
        $<TARGET_FILE:opencv_highgui> $<TARGET_FILE_DIR:${PROJECT_NAME}>
        $<TARGET_FILE:opencv_imgcodecs> $<TARGET_FILE_DIR:${PROJECT_NAME}>
)

当然发布软件时候也一并需要把dll发布出去:

install(
    FILES
        $<TARGET_FILE:opencv_core>
        $<TARGET_FILE:opencv_imgproc>
        $<TARGET_FILE:opencv_highgui>
        $<TARGET_FILE:opencv_imgcodecs>
    DESTINATION
        bin
)

需要注意的是Windows系统下用:通过TARGET_FILE找dll相关文件。

相关文章

网友评论

      本文标题:如何通过cmake拷贝运行所需依赖库到install的bin/l

      本文链接:https://www.haomeiwen.com/subject/pfhrrjtx.html