CMake匹配不带扩展名的头文件

要在CMake中匹配不带扩展名的头文件,可以使用 file(GLOB ...) 和正则表达式来过滤结果。以下是一种方法,该方法首先收集目录下的所有文件,然后使用 list(FILTER ...) 命令和正则表达式来只保留没有扩展名的文件:

# 使用GLOB收集目录下的所有文件
file(GLOB ALL_FILES "${CMAKE_CURRENT_SOURCE_DIR}/path/to/*")

# 先复制ALL_FILES到CPP_HEADERS
set(CPP_HEADERS ${ALL_FILES})

# 使用list(FILTER)和正则表达式来过滤出不带扩展名的文件
list(FILTER CPP_HEADERS EXCLUDE REGEX ".*\\..+$")

# 使用install()命令来安装这些文件
install(FILES ${CPP_HEADERS}
        DESTINATION desired/destination/directory)

在这里,正则表达式 .*\\..+$ 匹配任何带有扩展名的文件,因此我们使用 EXCLUDE 关键字来排除这些文件,只保留不带扩展名的文件。

请注意,正则表达式可能需要根据你的具体需求进行调整。上述正则表达式的意思是匹配任何包含一个点(.)的文件,这在大多数情况下应该是足够的,但如果你有特殊的文件命名约定或目录结构,你可能需要进行一些调整。

posted @ 2023-10-12 10:33  非法关键字  阅读(30)  评论(0编辑  收藏  举报