如何使用 cpack 打包符号链接?

unR*_*unR 5 symlink packaging cmake deb cpack

我见过许多 Linux 应用程序将其二进制文件打包在某些路径中,/opt/mypkg/myexecutable例如/usr/bin. 我在打包文件中看到了这些符号链接。

我想在使用 cpack 打包我的软件、使用 CPackDEB 和 CPackRPM 创建 deb 和 rpm 包时执行相同的操作。

  • 是否可以创建指向任意(可能不存在)路径的符号链接?

  • 那我可以使用吗INSTALL(FILES "mysymlink" DESTINATION /usr/bin/myapp COMPONENT MyComponent)?(当目的地实际存在时,遵循符号链接是否会出现问题?)

  • 我可以用类似的东西更改链接目的地吗CONFIGURE_FILE()

或者我只是缺少一个可以正确完成工作的 cpack 指令?

Dav*_*ant 4

看一下下面的例子:

cmake_minimum_required(VERSION 3.0)
project(myls NONE)

execute_process(COMMAND ln -s /opt/myapp/superls myls)

install(FILES ${CMAKE_BINARY_DIR}/myls DESTINATION /usr/bin/myapp COMPONENT MyComponent)

SET(CPACK_PACKAGE_CONTACT dmarquant)
include(CPack)
Run Code Online (Sandbox Code Playgroud)

您可以简单地创建一个指向不存在位置的符号链接,并按照您所编写的方式使用 install(FILES ...) 安装它。