web-dev-qa-db-ja.com

フォルダーの下のすべてのファイルをCMakeグロブに追加しますか?

私はこれを読んだところです:

CMake-フォルダー内のすべてのファイルを自動的にターゲットに追加しますか?

答えはファイルグロブを示唆しています、例えば:

file(GLOB "*.h" "*.cpp")

ここで、ターゲットを特定のフォルダーの下にある特定のタイプのすべてのファイルに依存させたい場合はどうなるでしょうか。複数のサブフォルダー内にある可能性があります。使ってみた

execute_process(COMMAND find src/baz/ -name "*.cpp" OUTPUT_VARIABLE BAR)

その後

add_executable(foo ${BAR}

しかし、これは私にエラーを与えます:

ソースファイルが見つかりません:

  src/baz/some/file/here

src/baz/some/other_file/here

src/baz/some/other_file/here2

(はい、その間隔で。)

ここで何が悪いのですか?

11
einpoklum

コメントを回答に変える

ファイルの再帰的な検索を追加する場合は、file(GLOB_RECURSE ...)を使用します

_file(GLOB_RECURSE source_list "*.cpp" "*.hpp")
_

2番目の例は次のようになります。

_file(GLOB_RECURSE BAR "src/baz/*.cpp")
_

参照

20
Florian