作为一个“安装后挂钩”,我需要执行一个安装命令,比如
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应该在安装后的“最终”文件上运行(以便创建有效的缓存)
发布于 2018-01-28 21:58:38
答案被证明是非常简单的(来自IRC的Nils Gladitz值得称赞):
使用反斜杠转义变量${CMAKE_INSTALL_PREFIX}会延迟它的扩展,直到安装时,它也通过CPack为installs保留了正确的值:
install(CODE "execute_process(COMMAND some_command \${CMAKE_INSTALL_PREFIX}/some_folder"))https://stackoverflow.com/questions/48477588
复制相似问题