题
我正在寻找以“以“”开头的每个文件。在目录中。
我正在使用 CMake (来自 CMake 文档:“CMake 需要正则表达式,而不是 glob”)并希望忽略以点开头的每个文件(隐藏文件)但是 "\..*"
或者 "^\..*"
不起作用:(
奇怪的是:这有效(感谢 rq 的 回答)并删除所有隐藏文件和临时文件(“~”终止文件)
file(GLOB DOT ".*")
file(GLOB TILD "*~")
set (CPACK_SOURCE_IGNORE_FILES "${DOT};${TILD}")
但我找不到合适的东西可以直接写入 CPACK_SOURCE_IGNORE_FILES
得到相同的结果!
这里是 ”文档”这个变量。
解决方案
听起来 GLOB 可能就是你想要的。
尝试这个。打开文件“test.cmake”并添加以下内容:
file(GLOB ALL "*")
file(GLOB DOT ".*")
file(GLOB NOTDOT "[^.]*")
message("All Files ${ALL}")
message("Dot files ${DOT}")
message("Not dot files ${NOTDOT}")
然后创建几个测试文件:
touch .dotfile
touch notdot
然后运行“cmake -P test.cmake”。输出是:
All Files /tmp/cmake_test/.dotfile;/tmp/cmake_test/notdot;/tmp/cmake_test/test.cmake
Dot files /tmp/cmake_test/.dotfile
Not dot files /tmp/cmake_test/notdot;/tmp/cmake_test/test.cmake
这是用 cmake 2.6.0 测试的。
其他提示
使用标准正则表达式语法:
^\..*
由于CMake的显然不喜欢这样,可以使用这样的:
^\\..*
这只是一个猜测,不过,因为我没有/使用CMake的。
下面的单行就做好了(隐藏的隐藏和代字号(“〜”)封端的文件):
set(CPACK_SOURCE_IGNORE_FILES "/\\\\..*$;~$;${CPACK_SOURCE_IGNORE_FILES}")
您需要逃避它。
^\..*
尝试这种情况:
^[.].*
不隶属于 StackOverflow