cmakeglobbuild-dependencies

Add all files under a folder to a CMake glob?


I've just read this:

CMake - Automatically add all files in a folder to a target?

With the answer suggesting a file glob, e.g.:

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

now, what if I want my target to depend on all files of a certain type under a certain folder - which might be within multiple subfolders? I tried using

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

and then

add_executable(foo ${BAR}

but this gives me the error:

Cannot find source file:

  src/baz/some/file/here

src/baz/some/other_file/here

src/baz/some/other_file/here2

(yes, with that spacing.)

What am I doing wrong here?


Solution

  • Turning my comment into an answer

    If you want to add recursive searching for files use file(GLOB_RECURSE ...)

    file(GLOB_RECURSE source_list "*.cpp" "*.hpp")
    

    Your second example would translate into

    file(GLOB_RECURSE BAR "src/baz/*.cpp")
    

    References