在我的 cmake C++ 项目中,我正在通过以下方式将源文件添加到目标
file(GLOB HEADERS *.h)
file(GLOB SOURCES *.cpp)
add_library(${PROJECT_NAME} SHARED ${SOURCES} ${HEADERS})
在macOS中,这包括._Source.cpp
和._Header.h
等文件,我尝试了REGEX
list(FILTER HEADERS REGEX "^[^.].+" output_variable HEADERS)
list(FILTER SOURCES REGEX "^[^.].+" output_variable SOURCES)
但这行不通。
将我的评论变成答案
file(GLOB HEADERS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "*.h")
file(GLOB SOURCES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "*.cpp")
list(FILTER HEADERS EXCLUDE REGEX "^\..+")
list(FILTER SOURCES EXCLUDE REGEX "^\..+"
list(FILTER ...)
需要INCLUDE
或EXCLUDE
关键字- 默认情况下,
file(GLOB ...)
将返回完整路径,因此您需要添加RELATIVE
关键字 - 正则表达式需要双反斜杠,因为 CMake 首先评估转义序列
- 您不需要
[]
(任何表达式(,因为您只检查单个字符
参考
- CMake:如何替换正则表达式中的反斜杠文字?