gpt4 book ai didi

c++ - 来自文本文件的grep字符串并将其复制到CMake中的目录

转载 作者:行者123 更新时间:2023-12-02 10:38:37 33 4
gpt4 key购买 nike

在CMake 2.8.12中,如何从文本文件grep字符串(每个字符串代表一个文件名)并将其复制到目录中?

例如,我有一个文本文件xx / yy / a.txt,其中包含:

xx xx xx abc="some_file_name1.txt" xx xx xx
xx xx xx abc="some_file_name2.txt" xx xx xx
xx xx xx abc="some_file_name3.txt" xx xx xx

其中“xx”可能是一些随机字符串。

我需要首先提取 some_file_name1.txt, some_file_name2.txt and some_file_name3.txt,通过将路径前缀 xx/yy/附加到每个提取的字符串中,为它们中的每一个形成正确的路径,然后将每个文件复制到目录 mydir/
我知道如何在bash脚本中执行此操作,但不知道如何在CMake中执行此操作,特别是,我需要在ADD_CUSTOM_COMMAND内执行此操作,以作为后期构建目标。

谢谢!

最佳答案

您可能具有通过自定义命令调用的CMake脚本。像这样:

# ProcessFile.cmake
file(READ "${ProcessFile_INPUT_PATH}" ProcessFile_CONTENT)
# Replace newlines with semicolon so that it is treated as a list by CMake
# Will need to escape existing semicolons beforehand if file contains any.
string(REPLACE "\n" ";" ProcessFile_LINES "${ProcessFile_CONTENT}")
foreach(_line ${ProcessFile_LINES})
string(REGEX REPLACE "^.+abc=\"(.+)\".+$" "xx/yy/\\1" _file_path "${_line}")
file(COPY "${_file_path}" DESTINATION "${ProcessFile_OUTPUT_DIR}")
endforeach()

# CMakeLists.txt
add_custom_command(OUTPUT "output-file"
COMMAND "${CMAKE_ROOT}" -DProcessFile_INPUT_PATH="xx/yy/a.txt" -DProcessFile_OUTPUT_DIR="mydir" -P ProcessFile.cmake)

我没有测试脚本,但这是要点:
  • ProcessFile.cmake解析文件,在每个linem上迭代以提取文件名并复制文件。
  • CMakeLists.txt中的add_custom_command()调用ProcessFile.cmake脚本,为其提供输入文件和输出目录的位置。
  • 关于c++ - 来自文本文件的grep字符串并将其复制到CMake中的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56973622/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com