【发布时间】:2021-11-02 06:14:05
【问题描述】:
我有一个脚本
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”也不会运行。
那么一个接一个地附加一个命令并保证它们都执行的逻辑是什么?
【问题讨论】:
-
sooo
add_custom_command( COMMAND cmd1 COMMAND cmd2 ...) -
它有效,谢谢。这个问题我能做什么?我无法用你的回答解决它。
标签: cmake