我正在使用cmake将软链接"libbssl.so"(具有目标libssl.so.3(复制到构建子目录。
COMMAND ${CMAKE_COMMAND} -E copy ${OPENSSL_SSL_LIBRARY} ${CMAKE_CURRENT_BINARY_DIR}/lib
copy命令按预期工作并复制文件,但文件名为libssl.so,而不是libssl.so.3。如何让cmake将文件名保存为libssl.so.3请记住,我不一定事先知道这个名称,也就是说,我不想硬编码它。我使用的是find_package(OpenSSL(。
我不知道有什么方便的方法可以直接使用cmake命令链接工具,但从cmake 3.15开始,cmake为file(COPY)
提供了FOLLOW_SYMLINK_CHAIN
,用于将包括完整符号链接链的库文件复制到目标目录。
您可以创建一个cmake脚本作为命令执行。
copy_symlink_chain.cmake
#[===[
Params:
LIBRARY : the name of the symlink to the lib
DESTINATION : the directory to copy the files to
]===]
file(COPY "${LIBRARY}" DESTINATION "${DESTINATION}" FOLLOW_SYMLINK_CHAIN)
...
COMMAND ${CMAKE_COMMAND} -D "LIBRARY=${OPENSSL_SSL_LIBRARY}" -D "DESTINATION=${CMAKE_CURRENT_BINARY_DIR}/lib" -P ${CMAKE_CURRENT_SOURCE_DIR}/copy_symlink_chain.cmake
...