我有一个项目,其中一个可重复的任务涉及到操作文件的内容。直到现在,我使用Python脚本来完成它,但最近我发现可以使用独立的CMake脚本(这里的“独立”意味着它们可以在configure/build/test等工作流之外调用)由于我的项目已经使用CMake进行项目管理,我得出结论,我可以保存其他人安装Python解释器的麻烦(欢迎Windows用户!)并在项目范围内使用CMake。
我的部分脚本需要读取一个文件,并将“[START-HERE]”行之前和“[END-HERE]”行之后出现的所有内容都剪掉,我被那部分卡住了,不知道怎么实现,怎么才能做到呢?
2条答案
按热度按时间2w3kk1z51#
您可以将
file(READ)
与if(MATCHES)
组合使用来accompile此文件。前者用于读取文件,后者用于检查是否出现正则表达式并提取捕获组:输出:
lzfw57am2#
对于您遇到的问题,下面是使用
string
、file
和math
命令的一种方法:您也可以使用
file(STRINGS)
命令来完成此操作,该命令将文件的行读入数组,然后使用list(FIND)
命令。如果分隔符不在自己的行上,则上述方法具有工作优势。如their answer post中的@fabian所示,您也可以使用
if(MATCHES)
的正则表达式来完成此操作,如下所示: