cpack and install(CODE ...) - CPACK_PACKAGING_INSTALL_PREFIX vs CMAKE_INSTALL_PREFIX

时间:2018-01-27 15:59:06

标签: cmake cpack

作为"安装后挂钩"我需要执行像

这样的安装命令
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应该在" final"安装后的文件(为了创建有效的缓存)

1 个答案:

答案 0 :(得分:1)

答案非常简单(来自IRC的Nils Gladitz的荣誉):

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

install(CODE "execute_process(COMMAND some_command \${CMAKE_INSTALL_PREFIX}/some_folder"))