CMake:在安装时执行目标 Debug 或 Release

CMake : execute target Debug or Release at install time

在我的 CMake 项目中,我生成了一个目标“MyProgram”

ADD_EXECUTABLE(MyProgram ...)

然后,在安装时,我想执行这个程序(带有一些参数)所以我使用

INSTALL(SCRIPT MyScript.cmake)

但是使用 Windows + MSVC,我找不到调用正确可执行文件的方法:

我对 cmake-generator-expressions 略知一二,但我无法让它与 install(SCRIPT) 一起使用。

如有任何帮助,我们将不胜感激!

要么生成了解可执行文件各自位置的不同脚本文件,要么使用例如install(SCRIPT "MyScript$<CONFIG>.cmake") 分别使用 MyScriptDebug.cmakeMyScriptRelease.cmake 进行调试或发布配置,或者使用 install(CODE) 允许您将参数传递给脚本:

CMakeLists.txt

install(CODE "execute_process(COMMAND \"${CMAKE_COMMAND}\" -D \"MY_PROGRAM=$<TARGET_FILE:MyProgram>\" -P MyScript.cmake)")

MyScript.cmake

execute_process(COMMAND ${MY_PROGRAM} ...)
...

虽然调用单个程序可能不需要脚本文件;您可以直接使用

调用程序
install(CODE "execute_process(COMMAND \"$<TARGET_FILE:MyProgram>\" ...)")