web-dev-qa-db-ja.com

CMakeでファイルの複数のリストをマージするにはどうすればよいですか?

一部のリソースを宛先フォルダーにコピーする必要があるCMakeでビルドされたプロジェクトがあります。現在、私はこのコードを使用しています:

file(GLOB files "path/to/files/*")
foreach(file ${files})
    ADD_CUSTOM_COMMAND(
        TARGET MyProject
        POST_BUILD
        COMMAND ${CMAKE_COMMAND} -E copy "${file}" "${CMAKE_BINARY_DIR}/Debug"
    )
endforeach()

次に、別のフォルダからさらにファイルをコピーします。したがって、両方からファイルをコピーしたいとしますpath/to/filesおよびpath/to/files2をバイナリフォルダの同じ場所に配置します。 1つの方法は上記のコードを複製することですが、長いカスタムコマンドを複製する必要はないようです。

file(およびlistコマンドも)を使用して2つのGLOBリストを連結する簡単な方法はありますか?

26
Calvin

file(GLOB ...)コマンドを使用すると、複数のグロビング式を指定できます。

file (GLOB files "path/to/files/*" "path/to/files2*")

または、 list APPEND サブコマンドを使用してリストをマージします。例:

file (GLOB files "path/to/files/*")
file (GLOB files2 "path/to/files2*")
list (APPEND files ${files2})
35
sakra

各パターンのリストを作成し、リストを連結します。

file(GLOB files1 "path/to/files1/*")
file(GLOB files2 "path/to/files2/*")
set(files ${files1} ${files2})
30
antonakos