1

我有一个rcxxd -i filename在该目录中递归运行的目录。并将生成的文件添加到我的项目中。

我正在检查一些关于lua的答案。我以类似的方式做到了。

SET(RESOURCE_COMPILER "xxd")
SET(COMPILED_RESOURCES "rc/base.css rc/common.js")
FOREACH(F ${COMPILED_RESOURCES})
    ADD_CUSTOM_COMMAND(
        OUTPUT "${COMPILED_RESOURCES}/${F}"
        COMMAND ${RESOURCE_COMPILER} -i "${COMPILED_RESOURCES}/${F}"
        COMMENT "Compiling ${F} to binary")
    LIST (APPEND COMPILED_RESOURCES "${COMPILED_RESOURCES}/${F}")
ENDFOREACH()

但我根本看不到任何文件生成。

4

1 回答 1

1

您可能看不到输出文件有几个原因。您的 xxd 命令在 .txt 中的格式不add_custom_command正确,而且仅当需要输出文件作为同一 CMakeLists.txt 中另一个 CMake 目标(exe 或 lib)的源时,才会执行该命令。

我会将您的代码段更改为:

SET(RESOURCE_COMPILER xxd)
FILE(GLOB_RECURSE COMPILED_RESOURCES "rc/*")
FOREACH(INPUT_FILE ${COMPILED_RESOURCES})
    SET(OUTPUT_FILE ${INPUT_FILE}.hex)
    ADD_CUSTOM_COMMAND(
        OUTPUT ${OUTPUT_FILE}
        COMMAND ${RESOURCE_COMPILER} -i ${INPUT_FILE} ${OUTPUT_FILE}
        COMMENT "Compiling ${INPUT_FILE} to binary")
    LIST(APPEND COMPILED_RESOURCES ${OUTPUT_FILE})
ENDFOREACH()

然后,如果您有另一个依赖于${OUTPUT_FILE}s 的目标,则该命令将在构建该目标时执行:

ADD_EXECUTABLE(MY_EXE main.cc ${COMPILED_RESOURCES})
于 2013-01-20T11:39:20.653 回答