如何添加两条add_custom_command命令,一条一条执行

How to add two add_custom_command commands to execute one by one

我有剧本

list(LENGTH SRC_FBS_FILES LEN)
math(EXPR FBS_LIST_NUM "${LEN} - 1")
foreach (LIST_ITEM RANGE ${FBS_LIST_NUM})
    list(GET SRC_FBS_FILES ${LIST_ITEM} SRC_FBS_FILE)
    list(GET DST_FBS_FILES ${LIST_ITEM} DST_FBS_FILE)
    list(GET GEN_FBS_FILES ${LIST_ITEM} GEN_FBS_FILE)

    get_filename_component(DST_FBS_FILE_DIR ${DST_FBS_FILE} DIRECTORY)

    add_custom_command (OUTPUT "${DST_FLATBUFFERS_DIR}/${GEN_FBS_FILE}"
            COMMENT "Generating flatbuffers header ${GEN_FBS_FILE} from ${SRC_FBS_FILE}"
            COMMAND ${_FLATC} --cpp "${SRC_FLATBUFFERS_DIR}/${SRC_FBS_FILE}"
            WORKING_DIRECTORY "${DST_FLATBUFFERS_DIR}"
            DEPENDS "${SRC_FLATBUFFERS_DIR}/${SRC_FBS_FILE}"
            )

    add_custom_command(
            OUTPUT "${DST_FLATBUFFERS_DIR}/${DST_FBS_FILE}"
            COMMENT "Renaming '${GEN_FBS_FILE}' to '${DST_FBS_FILE}'"
            #${CMAKE_COMMAND} -E echo "ETest"
            COMMAND ${CMAKE_COMMAND} -E copy
            "${DST_FLATBUFFERS_DIR}/${GEN_FBS_FILE}"
            "${DST_FLATBUFFERS_DIR}/${DST_FBS_FILE}"
            DEPENDS "${SRC_FLATBUFFERS_DIR}/${GEN_FBS_FILE}"
            )

    set(FLATBUFFERS_H_FILES ${FLATBUFFERS_H_FILES} "${DST_FLATBUFFERS_DIR}/${GEN_FBS_FILE}")
endforeach()

我想重命名 flatbuffer 实用程序的输出文件。但是第二个脚本永远不会运行,cmake 事件没有说明它的结果语法。

我知道在某处使用 OUTPUT 结果很重要,例如,如果我更改

    set(FLATBUFFERS_H_FILES ${FLATBUFFERS_H_FILES} "${DST_FLATBUFFERS_DIR}/${GEN_FBS_FILE}")

    set(FLATBUFFERS_H_FILES ${FLATBUFFERS_H_FILES} "${DST_FLATBUFFERS_DIR}/${DST_FBS_FILE}")

我将“GEN...”更改为“DST...”然后即使是第一个“add_custom_command”也不会运行。

那么一个接一个地附加命令并保证它们都执行的逻辑是什么?

您可以在add_custom_command中多次指定命令。

add_custom_command(
      COMMAND cmd1 arg11 arg12
      COMMAND cmd2 arg21 arg22
      ..etc...
)

保证命令按顺序执行