安装后,我想在目标上运行命令。我看到“ cmake run script for install target?”,它似乎与安装所有组件后运行一个脚本有关。我的问题是针对每个目标的脚本。
我想要做的是在已安装的二进制文件上运行patchelf
来更改解释器。这很像cmake如何更改已安装二进制文件上的RPATH。研究如何完成此操作,我在cmake_install.cmake
(为简便起见而编辑)中看到了以下内容:
file(INSTALL DESTINATION "/bin" TYPE EXECUTABLE FILES "program")
file(RPATH_CHANGE
FILE "$ENV{DESTDIR}/bin/program"
OLD_RPATH "build-dir"
NEW_RPATH "")
if(CMAKE_INSTALL_DO_STRIP)
execute_process(COMMAND "/usr/bin/strip" "$ENV{DESTDIR}/bin/program")
endif()
这将更改rpath并在安装二进制文件后剥离它。看来我需要做的就是在其中再放一个execute_process
来运行我的patchelf命令。然而,我找不到任何办法让cmake做到这一点。
看来add_custom_command(POST_BUILD ...)
很近,但是我不想修改build目录中的二进制文件,仅在安装后才能修改,例如cmake如何修改rpath。