我有一个 rc
目录,我想在该目录中递归运行 xxd -i filename
。并将生成的文件添加到我的项目中。
我正在检查一些 answer在 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()
但我根本没有看到生成任何文件。
最佳答案
您可能看不到输出文件的原因有很多。您的 xxd 命令在 add_custom_command
中的格式不正确,而且只有在同一 CMakeLists 中的另一个 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}
的目标,则该命令将在构建该目标时执行:
ADD_EXECUTABLE(MY_EXE main.cc ${COMPILED_RESOURCES})
关于c++ - cmake 运行 xxd 作为自定义命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14422507/