如何使用 cpack 打包符号链接?
How can I package a symlink with cpack?
我见过许多 linux 应用程序与它们的二进制文件一起打包在某些路径中,例如 /opt/mypkg/myexecutable
和 /usr/bin
中的符号link。我在打包文件中看到了这些 symlinks。
我想在用 cpack 打包我的软件时做同样的事情,用 CPackDEB 和 CPackRPM 创建 deb 和 rpm 包。
是否可以为任意的、可能不存在的路径创建符号link?
我可以使用INSTALL(FILES "mysymlink" DESTINATION /usr/bin/myapp COMPONENT MyComponent)
吗? (当目的地实际存在时,是否会出现跟随 symlinks 的问题?)
我可以用 CONFIGURE_FILE()
之类的东西更改 link 目的地吗
或者我只是缺少一个可以正确完成工作的 cpack 指令?
看看下面的例子:
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 ...) 安装它。
我见过许多 linux 应用程序与它们的二进制文件一起打包在某些路径中,例如 /opt/mypkg/myexecutable
和 /usr/bin
中的符号link。我在打包文件中看到了这些 symlinks。
我想在用 cpack 打包我的软件时做同样的事情,用 CPackDEB 和 CPackRPM 创建 deb 和 rpm 包。
是否可以为任意的、可能不存在的路径创建符号link?
我可以使用
INSTALL(FILES "mysymlink" DESTINATION /usr/bin/myapp COMPONENT MyComponent)
吗? (当目的地实际存在时,是否会出现跟随 symlinks 的问题?)我可以用
CONFIGURE_FILE()
之类的东西更改 link 目的地吗
或者我只是缺少一个可以正确完成工作的 cpack 指令?
看看下面的例子:
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 ...) 安装它。