Conan 拷贝依赖库到指定目录

发布时间 2024-01-10 09:49:14作者: Smalldy
function(copy_shared_libraries CONAN_LIB_DIRS TARGET_DIR)
    foreach(LIB_DIR ${CONAN_LIB_DIRS})
        file(GLOB_RECURSE LIB_FILES ${LIB_DIR}/*.so*)  # 使用通配符匹配所有可能的共享库文件
        foreach(LIB_FILE ${LIB_FILES})
            # 获取共享库文件名 这个名字不包含路径
            get_filename_component(LIB_NAME ${LIB_FILE} NAME)
            # 拷贝文件 到指定目录
            file(COPY ${LIB_FILE} DESTINATION ${TARGET_DIR})
        endforeach()
    endforeach()
endfunction()

如果未经配置,conan会将应用程序输出到bin目录下,这个目录是变量 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} 指定的。

通常我会在应用程序所在目录创建一个lib文件夹,用来存放共享库

build
    bin
        you_exe
        lib
                xxxxx.so
                xxxxx.so   

调用这个函数可以帮助你拷贝so,例如:

copy_shared_libraries(${CONAN_LIB_DIRS_OPENSSL} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/lib)