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

4
我看到很多Linux应用程序将其二进制文件打包在路径中,例如/opt/mypkg/myexecutable,并在/usr/bin中创建了一个符号链接。我在打包文件中看到了这些符号链接。

我想在使用cpack打包软件时也这样做,使用CPackDEB和CPackRPM创建deb和rpm软件包。

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

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

  • 是否可以使用CONFIGURE_FILE()更改链接目标?

或者我只是缺少一个正确执行此任务的cpack指令?

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 ...)安装它。


1
这对于安装来说很有效,但是在打包时,这会导致添加我想要添加符号链接的文件夹/目标。你有什么替代方案可以建议吗? - Avinal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接