gpt4 book ai didi

CMake "FILES_MATCHING_PATTERN"复制空目录

转载 作者:行者123 更新时间:2023-12-03 22:09:27 24 4
gpt4 key购买 nike

我使用 CMakeLists.txt 和以下安装命令:

install(DIRECTORY ./ DESTINATION include FILES_MATCHING PATTERN "*.h")

它会正确安装所有“./*.h”文件,但也会复制“./.git”目录结构(没有任何文件)。

该问题在使用 CMake 3.14.0 时发生,而在 CMake 3.11.1 中未发生。

命令是否更改或这是 CMake 错误?我应该对“.git”使用显式排除,还是可以以某种方式保留白名单方法,例如当我真正需要安装子文件夹时继续工作?

最佳答案

截至目前,除了明确指定排除您的目录之外,似乎不存在任何直接的解决方案。该行为在 3.14.0 版中并不新鲜,在 3.11.1 中也类似。您的 .git 目录未被复制的事实可能是由于您的 CMakeLists 中的另一个命令......
正如您所建议的,基于旧 CMake 论坛中的 this postthis thread,您的解决方案是:

install(DIRECTORY ./ DESTINATION include FILES_MATCHING PATTERN "*.h" PATTERN ".git*" EXCLUDE)

当使用 install(DIRECTORY ...) 时,有一个 ticket 可以添加一个不包含空目录的功能,因此您可能会密切关注它何时最终实现。

或者,您可以使用嵌套的 file(GLOB ...) 后跟 install(FILES ...) ,具有通配的固有缺点(请参阅文档中的 note )。

关于CMake "FILES_MATCHING_PATTERN"复制空目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55451084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com