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
关键字来排除这些文件,只保留不带扩展名的文件。
请注意,正则表达式可能需要根据你的具体需求进行调整。上述正则表达式的意思是匹配任何包含一个点(.
)的文件,这在大多数情况下应该是足够的,但如果你有特殊的文件命名约定或目录结构,你可能需要进行一些调整。