我有一个rc
目录,我想在该目录中递归地运行xxd -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()
但是我没有看到任何文件生成
看不到输出文件的原因可能有几个。您的xxd命令在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})