我想从特定行开始读取文件。Cmake 官方文档建议使用带有偏移量的 file()但我不确定它的用法。我要阅读的文件是test.mak:
# -----------------------------------------------------------------------------
## TEST
# -----------------------------------------------------------------------------
TEST_COMPONENTS ?= ABC DEF GHI
# SYMBOLS
SYMBOLS_PROJ ?= A002
SYMBOLS_LABEL ?= TEST_A002_FINAL
我有一个 cmake 文件(该函数来自互联网,它适用于我的用例),我想从“#SYMBOLS”开始读取 test.mak 文件,以便忽略/跳过此行之前定义的宏,然后我想在我当前的 cmake 中设置宏:
function(Fileread MKFile)
file(READ "${MKFile}" FileContents [OFFSET "# SYMBOLS"])
string(REPLACE "?" "" FileContents ${FileContents})
string(REPLACE "\\\n" "" FileContents ${FileContents})
string(REPLACE "\n" ";" FileLines ${FileContents})
list(REMOVE_ITEM FileLines "")
foreach(line ${FileLines})
string(REPLACE "=" ";" line_split ${line})
list(LENGTH line_split count)
if (count LESS 2)
message(STATUS "Skipping ${line}")
continue()
endif()
list(GET line_split -1 value)
string(STRIP "${value}" value)
separate_arguments(value)
list(REMOVE_AT line_split -1)
foreach(var_name ${line_split})
string(STRIP ${var_name} var_name)
set(${var_name} ${value} PARENT_SCOPE)
endforeach()
endforeach()
endfunction()
Fileread("test.mak")
偏移设置不起作用,因此我也得到了我不需要的宏 TEST_COMPONENTS。注意:TEST_COMPONENTS 只是一个示例,在“# SYMBOLS”之前有多行宏定义我想跳过。感谢您提前解决此问题的任何建议。