如何添加两条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...
)
保证命令按顺序执行
我有剧本
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...
)
保证命令按顺序执行