我有一个rc
目录我希望在该目录中递归运行xxd -i filename
。并将生成的文件添加到我的项目中。
我正在检查lua上的一些answer。我以类似的方式做到了。
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()
但我根本看不到任何文件。
答案 0 :(得分:1)
有几个原因可能导致您无法看到输出文件。您的xxd命令在add_custom_command
中格式不正确,但只有在同一个CMakeLists.txt中另一个CMake目标(exe或lib)中需要输出文件作为源时,才会执行该命令。 / p>
我会将您的代码段更改为:
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})