18

我刚刚读过这个:

CMake - 自动将文件夹中的所有文件添加到目标?

答案建议使用文件 glob,例如:

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

(是的,有那个间距。)

我在这里做错了什么?

4

1 回答 1

29

将我的评论变成答案

如果要为文件添加递归搜索,请使用file(GLOB_RECURSE ...)

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

你的第二个例子将转化为

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

参考

于 2016-02-16T13:19:28.360 回答