У меня есть rc
каталог, который я хочу запустить xxd -i filename
рекурсивно в этом каталоге. и добавить сгенерированные файлы в мой проект.
Я проверял некоторые ответ на Луа. и я сделал это аналогичным образом.
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
, но команда также будет выполняться только в том случае, если выходной файл требуется в качестве источника в другой цели CMake (exe или lib) в том же CMakeLists.txt.
Я бы изменил ваш фрагмент на что-то вроде:
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})
Других решений пока нет …