在 CMake 中,如何在安装目标后运行脚本?

piw*_*iwi 5 installation cmake

我正在尝试在 CMake 安装完成后运行脚本。我在 SO 上找到了这个线程,但它仍然不起作用,因为我的脚本取决于安装的目标。

基本上我的脚本在安装目标之前运行。这是因为 CMake 似乎将安装子目录目标的代码放在最后cmake_install.cmake

这是一个说明问题的示例;子目录 CMake 文件:

# src/CMakeLists.txt
add_executable(foo main.cpp)
install(TARGETS foo DESTINATION bin)
Run Code Online (Sandbox Code Playgroud)

顶级 CMake 文件:

# Top-level CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
add_subdirectory(src)
install(CODE "execute_process(COMMAND ls ${CMAKE_INSTALL_PREFIX}/bin/foo)")
Run Code Online (Sandbox Code Playgroud)

运行make install产量:

-- Install configuration: "debug"
ls: cannot access /tmp/dummy/bin/foo: No such file or directory
-- Installing: /tmp/dummy/bin/foo
Run Code Online (Sandbox Code Playgroud)

知道如何解决这种行为吗?谢谢!

ixS*_*Sci 4

如果您发现 cmake 将子目录安装目标放置在 cmake_install 的末尾,您可以使用 cmake 添加另一个子目录,其中包含在所有其他目标之后需要完成的操作。