1

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()

しかし、生成されたファイルはまったく表示されません。

4

1 に答える 1

1

出力ファイルが表示されない場合、いくつかの理由が考えられます。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()

次に、 s に依存する別のターゲットがある${OUTPUT_FILE}場合、そのターゲットが構築されているときにコマンドが実行されます。

ADD_EXECUTABLE(MY_EXE main.cc ${COMPILED_RESOURCES})
于 2013-01-20T11:39:20.653 に答える