cpack and install(CODE ...) - CPACK_PACKAGING_INSTALL_PREFIX vs CMAKE_INSTALL_PREFIX
Posted
技术标签:
【中文标题】cpack and install(CODE ...) - CPACK_PACKAGING_INSTALL_PREFIX vs CMAKE_INSTALL_PREFIX【英文标题】: 【发布时间】:2018-01-27 15:59:06 【问题描述】:作为“安装后挂钩”,我需要执行类似的安装命令
install(CODE "execute_process(COMMAND some_command $CMAKE_INSTALL_PREFIX/some_folder"))
它根据之前安装到some_folder
中的文件在some_folder
中创建一个文件(它编译这些文件的索引/缓存)。
这适用于安装目标,但是一旦使用 cpack $CMAKE_INSTALL_PREFIX
不再是正确的位置。
是否有像 $CMAKE_CURRENT_INSTALL_PREFIX 这样的变量始终指向当前安装目录,无论是否使用默认安装目标或 cpack 并且可以用于此目的?
我看到的唯一替代方法是尝试在早期阶段对原始文件执行命令,创建临时文件并安装临时文件。不幸的是,这更容易出错,因为some_command
应该在安装后在“最终”文件上运行(以便创建有效的缓存)
【问题讨论】:
【参考方案1】:答案非常简单(来自 IRC 的 Nils Gladitz 表示敬意):
使用反斜杠转义变量 $CMAKE_INSTALL_PREFIX
会延迟其扩展,直到安装时它也为通过 CPack 的安装保持正确值:
install(CODE "execute_process(COMMAND some_command \$CMAKE_INSTALL_PREFIX/some_folder"))
【讨论】:
以上是关于cpack and install(CODE ...) - CPACK_PACKAGING_INSTALL_PREFIX vs CMAKE_INSTALL_PREFIX的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 CPACK_PACKAGE_INSTALL_REGISTRY_KEY 添加注册表项?