CMake安装命令中的正则表达式

Ama*_*ani 1 regex cmake

我有一个包含混合源 (.cpp) 和头文件 (.h 和 .hpp) 的文件夹。如何在 CMake 安装命令中编写正则表达式以仅将头文件安装到特定目标?

我搜索有关如何在 CMake 安装命令中使用正则表达式的示例没有成功。

小智 5

安装文档

FILES_MATCHING 选项可以在第一个匹配选项之前给出,以禁用任何表达式不匹配的文件(但不是目录)的安装。

用法

cmake_minimum_required(VERSION 2.8)
project(foo)

install(
    DIRECTORY
    "./src"
    DESTINATION
    "include/foo"
    FILES_MATCHING
    PATTERN
    "*.hpp"
)
Run Code Online (Sandbox Code Playgroud)

例子

> cmake -H. -B_builds -DCMAKE_INSTALL_PREFIX=`pwd`/_install
> cmake --build _builds/ --target install
> find src/ -type f
src/a.hpp
src/a.cpp
src/B/b.hpp
src/B/b.cpp
Run Code Online (Sandbox Code Playgroud)

*.hpp安装文件:

> find _install/ -type f
_install/include/foo/src/a.hpp
_install/include/foo/src/B/b.hpp
Run Code Online (Sandbox Code Playgroud)