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 指令?
看一下下面的例子:
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 ...) 安装它。