CMake:如何在make install之前执行命令?

Mey*_*sam 1 linux install cmake

这是我安装配置文件的方式:

file(GLOB ConfigFiles  ${CMAKE_CURRENT_SOURCE_DIR}/configs/*.xml
                            ${CMAKE_CURRENT_SOURCE_DIR}/configs/*.xsd
                            ${CMAKE_CURRENT_SOURCE_DIR}/configs/*.conf)

install(FILES ${ConfigFiles} DESTINATION ${INSTDIR})
Run Code Online (Sandbox Code Playgroud)

但我需要在安装之前转换其中一个xml文件.有一个可执行文件可以为我做这个工作:

./Convertor a.xml a-converted.xml

如何在安装之前自动转换xml文件?它应该是一个自定义命令或目标,安装依赖于它,我只是不知道如何使install命令依赖它.任何意见,将不胜感激!

Com*_*sMS 6

看看SCRIPT版本install:

SCRIPT和CODE签名:

install([[SCRIPT <file>] [CODE <code>]] [...])

SCRIPT表单将在安装期间调用给定的CMake脚本文件.如果脚本文件名是相对路径,则将根据当前源目录解释它.CODE表单将在安装期间调用给定的CMake代码.代码在双引号字符串中指定为单个参数.

例如:

install(CODE "execute_process(\"./Convertor a.xml a-converted.xml\")")
install(FILES a-converted.xml DESTINATION ${INSTDIR})
Run Code Online (Sandbox Code Playgroud)

务必查看entry for execute_process手册中的内容.另请注意,CODE参数内部的宏扩展可能有点棘手.检查生成cmake_install.cmake目录中生成的代码所生成的代码.