gpt4 book ai didi

c++ - cmake 运行 xxd 作为自定义命令

转载 作者:太空宇宙 更新时间:2023-11-04 12:00:14 30 4
gpt4 key购买 nike

我有一个 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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com