4

我已经看到许多 linux 应用程序与它们的二进制文件一起打包在一些路径/opt/mypkg/myexecutable中,例如/usr/bin. 我在打包文件中看到了这些符号链接。

我想在用 cpack 打包我的软件时做同样的事情,用 CPackDEB 和 CPackRPM 创建 deb 和 rpm 包。

  • 是否可以为任意的、可能不存在的路径创建符号链接?

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

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

还是我只是缺少一个正确完成工作的 cpack 指令?

4

1 回答 1

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)

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

于 2016-01-03T21:58:53.903 回答