8

私はこのようなことをしたい

execute_process(
    COMMAND bash -c "git --git-dir ${CMAKE_SOURCE_DIR}/.git ls-files"
OUTPUT_VARIABLE TRACKED_FILES)

add_custom_target(all_file_project SOURCES ${TRACKED_FILES})

また、コマンド自体は期待どおりに機能しているように見えますが、生成された変数「TRACKED_FILES」には、ファイルのリストではなく、1 つの論理エントリ (1 つの複数行文字列) しか含まれていません。

改行 ("\n") で区切られた複数の行を含む文字列をどうにかして CMake のリストに変換できますか?

4

1 に答える 1

7

1 つのオプション (私の質問のタイトルが示すように) は、最初に変数をリストとして解釈するのではなく、文字列を手動で積極的に分割することです。

string(REPLACE "\n" ";" ADDITIONAL_PROJECT_FILES_LIST ${ADDITIONAL_PROJECT_FILES})

これは私にとってはうまくいきますが、より抽象的でプラットフォーム固有ではないものがあれば非常にいいでしょう (たとえば、これが Windows を含むすべての OS で機能するかどうかはわかりません)。

何かのようなものexecute_process(COMMAND find -type f OUTPUT_LIST_VARIABLE MY_LIST)

または少なくともset(MY_LIST FROM_MULTILINE MY_MULTILINE_STRING)

于 2019-05-06T09:04:29.150 に答える