作为"安装后挂钩"我需要执行像
这样的安装命令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"安装后的文件(为了创建有效的缓存)
答案 0 :(得分:1)
答案非常简单(来自IRC的Nils Gladitz的荣誉):
使用反斜杠转义变量${CMAKE_INSTALL_PREFIX}
会延迟其扩展,直到它保存正确值的安装时间也通过CPack安装:
install(CODE "execute_process(COMMAND some_command \${CMAKE_INSTALL_PREFIX}/some_folder"))