首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cpack和install(代码...) - CPACK_PACKAGING_INSTALL_PREFIX与CMAKE_INSTALL_PREFIX

cpack和install(代码...) - CPACK_PACKAGING_INSTALL_PREFIX与CMAKE_INSTALL_PREFIX
EN

Stack Overflow用户
提问于 2018-01-27 23:59:06
回答 1查看 784关注 0票数 2

作为一个“安装后挂钩”,我需要执行一个安装命令,比如

代码语言:javascript
复制
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应该在安装后的“最终”文件上运行(以便创建有效的缓存)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-28 21:58:38

答案被证明是非常简单的(来自IRC的Nils Gladitz值得称赞):

使用反斜杠转义变量${CMAKE_INSTALL_PREFIX}会延迟它的扩展,直到安装时,它也通过CPack为installs保留了正确的值:

代码语言:javascript
复制
install(CODE "execute_process(COMMAND some_command \${CMAKE_INSTALL_PREFIX}/some_folder"))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48477588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档