我想在一个目录下安装所有的头文件。
我知道正则表达式可以做到这一点。但我在谷歌上搜索了很多,没有找到如何将这三种文件包含在一起。
我使用了这样的命令:
file(GLOB INFRA ${LOCAL_SRC_PATH}/infra/*.h[|p|x][|p|x])
使INFRA
变量保存所有头文件,但我发现它忽略了.h
我知道这很容易,你能帮忙吗?
globbing表达式不是正则表达式;您需要使用3个单独的命令来匹配.h
、.hpp
和.hxx
文件。即使作为正则表达式,这也会失败,因为字符组与字符|
、p
和x
匹配,但与空字符串不匹配。
在这种情况下,你可能会使用
set(PATH_PREFIX "${LOCAL_SRC_PATH}/infra/*")
file(GLOB INFRA_H "${PATH_PREFIX}.h")
file(GLOB INFRA_HPP "${PATH_PREFIX}.hpp")
file(GLOB INFRA_HXX "${PATH_PREFIX}.hxx")
set(INFRA ${INFRA_H} ${INFRA_HPP} ${INFRA_HXX})
在这种情况下,我建议使用install(DIRECTORY)
;这也允许您使用regex而不是globbing表达式:
install(DIRECTORY "${LOCAL_SRC_PATH}/infra"
TYPE INCLUDE
FILES_MATCHING REGEX ".*\.(h|hpp|hxx)")