如何按顺序在add_custom_command中运行cmake命令

时间:2020-02-06 23:45:21

标签: cmake

具体来说,我正在寻找一个示例来执行cmake文档中针对 add_custom_command 的说明:

如果指定了多个COMMAND,它们将按顺序执行,但不一定组成一个有状态的shell或批处理脚本。 (要运行完整脚本,请使用configure_file()命令或file(GENERATE)命令创建它,然后指定一个COMMAND启动它。)

在不增加太多细节的情况下进行一些详细说明:有一个外部程序可以生成3个源文件,这些文件随后将进行编译。生成程序仅更新其更改的文件的时间戳,而不是所有文件的时间戳。因此,即使我的DEPENDS时间戳是较新的,它也可能不需要更改1个源文件,因此cmake每次都会尝试运行代码生成器。我想在代码生成结束时触摸所有文件,以便更新其所有时间戳。

在add_custom_command中依次运行COMMANDS的过程是什么?

编辑:

这是我目前正在尝试做的事情:

add_custom_command(
    OUTPUT
        ${CONFIG_TOOLS_GENERATED_FILES}
    COMMAND if exist ${Application_SOURCE_DIR}/..MCUExpresso/board rmdir ${Application_SOURCE_DIR}/..MCUExpresso/board
    COMMAND
        "${MCU_CONFIG_TOOLS_DIR}/bin/eclipsec.exe" -noSplash 
        -Load ${MEX_FILE}
        -HeadlessTool Pins -ExportSrc "${Application_SOURCE_DIR}/../MCUExpresso" 
        -HeadlessTool Clocks -ExportSrc "${Application_SOURCE_DIR}/../MCUExpresso"
        -HeadlessTool Peripherals -ExportSrc "${Application_SOURCE_DIR}/../MCUExpresso"
    DEPENDS ${MEX_FILE}
    COMMENT "Generating source files using MCU Config Tools"
)

这里有两个问题-我尝试删除的目录(带有生成的代码)可能会在代码生成运行后最终被删除,因为命令不是有状态的。其次,该目录实际上并未删除-似乎是Windows的路径问题...

0 个答案:

没有答案