【发布时间】:2014-06-30 13:22:05
【问题描述】:
在我项目的任何子目录中,都可以在任何地方创建一个名为“hide”的目录,并在其中放置一些代码文件(.c、.cpp、.h、...)。 CMake 将忽略这些文件。我怎样才能做到这一点? 有什么简单方法的建议吗?网上搜了一圈没找到解决办法。
我尝试了什么:
文件和全局
file(GLOB_RECURSE SOURCE_FILES "*.cpp" "*.c")
file(GLOB_RECURSE REMOVE_SOURCES
"*/hide/*"
"${PROJECT_SOURCE_DIR}/CMakeFiles/*"
"*main.c")
file(GLOB_RECURSE REMOVE_SOURCES "*/hide/*")
list(REMOVE_ITEM SOURCE_FILES ${REMOVE_SOURCES})
如果目录路径已知(对于“CMakeFiles”目录)或文件已知(对于“main.c”文件),则第二行可以正常工作。但如果一个字符串有两个 '*' 则不起作用。对于位于某处的目录,我找不到简单的解决方案。
正则表达式
然后我尝试使用 REGEX。
file(GLOB_RECURSE SOURCE_FILES "*.cpp" "*.c")
string(REGEX REPLACE ";.*/hide/.*;" ";" FOO ${SOURCE_FILES})
因为源文件列表是用分号分隔的,如果上面的行包含字符串'hide',上面的行将把字符串从一个分号移到下一个分号。 该表达式的分号似乎有问题。有任何分号会使命令什么也找不到。
foreach 循环
我尝试了一些 foreach 循环,但无法获得所有“隐藏”目录的列表。
【问题讨论】:
-
你的问题对我有帮助。
标签: cmake