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

时间:2014-02-25 07:00:48

标签: linux cmake install

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

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})

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

  

./ Convertor a.xml a-converted.xml

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

1 个答案:

答案 0 :(得分:6)

查看SCRIPT version of install

  

SCRIPT和CODE签名:

     

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

     

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

例如:

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

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