所以我有这样的文件(或值)列表
set(HEADER_FILES DirA/header1.h DirA/header2.hpp
DirB/header3.h DirB/stuff.hpp)
那么如何仅在 DirA 中获取文件的子列表?我正在使用 CMake 2.8.x,我厌倦了正则表达式匹配:
string(REGEX MATCHALL "DirA/(.+)" DirA_FILES ${HEADER_FILES})
但结果只是原始字符串的副本,例如:“DirA/header1.h DirA/header2.hpp DirB/header3.h DirB/stuff.hpp”或什么都没有。
和往常一样,在写这个问题时我解决了它:
set(SubListMatch)
foreach(ITR ${HEADER_FILES})
if(ITR MATCHES "(.*)DirA/(.*)")
list(APPEND SubListMatch ${ITR})
endif()
endforeach()
但是 CMake 对我来说是相当新的东西,那么我如何将代码包装成函数呢?到目前为止,我从未编写过任何 CMake 函数。