我使用 CMakeLists.txt 和以下安装命令:
install(DIRECTORY ./ DESTINATION include FILES_MATCHING PATTERN "*.h")
Run Code Online (Sandbox Code Playgroud)
它会正确安装所有“./*.h”文件,但也会复制“./.git”目录结构(没有任何文件)。
该问题在使用 CMake 3.14.0 时发生,而在 CMake 3.11.1 中未发生。
命令是否更改或这是 CMake 错误?我应该对“.git”使用显式排除,还是可以以某种方式保留白名单方法,例如当我实际需要安装子文件夹时继续工作?
小智 5
截至目前,除了明确指定排除您的目录之外,似乎不存在任何直接的解决方案。该行为在 3.14.0 版中并不新鲜,在 3.11.1 中也类似。你的 .git 目录没有被复制的事实可能是由于你的 CMakeLists 中的另一个命令......
正如你所建议的那样,基于这篇文章和旧 CMake 论坛中的这个线程,你的解决方案是:
install(DIRECTORY ./ DESTINATION include FILES_MATCHING PATTERN "*.h" PATTERN ".git*" EXCLUDE)
Run Code Online (Sandbox Code Playgroud)
有一张票可以在使用时添加不包含空目录的功能install(DIRECTORY ...),因此您可能会密切关注它何时最终实现。
或者,您可以使用嵌套file(GLOB ...)后跟install(FILES ...),具有通配的固有缺点(请参阅文档中的注释)。
| 归档时间: |
|
| 查看次数: |
899 次 |
| 最近记录: |