如何使用 CMake 将多个文件列表合并在一起?

发布于 2024-12-06 11:30:35 字数 542 浏览 3 评论 0原文

我有一个使用 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/filespath/to/files2 中的文件复制到二进制文件夹中的同一位置。一种方法是复制上面的代码,但似乎没有必要复制冗长的自定义命令。

有没有一种简单的方法可以使用 file (也可能使用 list 命令)来连接两个 GLOB 列表?

I have a project built with CMake that needs to copy some resources to the destination folder. Currently I use this code:

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()

Now I want to copy more files from a different folder. So we want to copy files from both path/to/files and path/to/files2 to the same place in the binary folder. One way would be to just duplicate the above code, but it seems unnecessary to duplicate the lengthy custom command.

Is there an easy way to use file (and possibly the list command as well) to concatenate two GLOB lists?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

逐鹿 2024-12-13 11:30:35

文件(GLOB ...) 命令允许指定多个通配表达式:

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

或者,使用 列表(附加...) 合并列表的子命令,例如:

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

The file (GLOB ...) command allows for specifying multiple globbing expressions:

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

Alternatively, use the list (APPEND ...) sub-command to merge lists, e.g.:

file (GLOB files "path/to/files/*")
file (GLOB files2 "path/to/files2*")
list (APPEND files ${files2})
傾城如夢未必闌珊 2024-12-13 11:30:35

我将为每个模式构建一个列表,然后连接这些列表:

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

I'd construct a list for each of the patterns and then concatenate the lists:

file(GLOB files1 "path/to/files1/*")
file(GLOB files2 "path/to/files2/*")
set(files ${files1} ${files2})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文