提取多个文件元素并生成yaml文件

时间:2018-06-03 13:32:13

标签: cmake

我有项目的根目录CMakeLists.txt文件,其中包含要添加为add_subdirectory('dirname' 'ALL/BASE')的子目录。在每个子目录中都有它自己的CMakeLists.txt,它包含包名称及其标题,依赖关系和其他属性作为标准库包调用的参数。我想获取特定数据并创建一个可以进一步解析以进行处理的YAML文件。

CMakeLists.txt (根目录):

add_subdirectory(sd1 ALL)
...(similar calls for - sd2, sd3, etc.)

CMakeLists.txt (子目录sd1):

... (some cmake script)
STANDARD_LIBRARY_PACKAGE([packagename] [attribute1-name] [attribute1-value(s)] [attribute2-name] [attribute2-value(s)] ... )
...(more cmake script) 

任务是从最外层文件获取子目录,进入子目录CMakeLists.txt并获取 空格分隔 属性值并创建yml文件。 STANDARD_LIBRARY_PACKAGE(args)命令存在于所有子文件中,需要

yml格式:

packagename1
- attribute-name: attribute-values
- package-path: path/to/subdir
packagename2
-
- ...(similar more)

我用Python尝试过这个,但我无法获取属性值,因为有些是基于条件状态(如果CMake变量设置然后使用它,否则不要)

我尝试过的事情:

macro (show_args)
#  set(multiValueArgs DEPENDENCIES)
  message("${${}ARGV0}")
  message("${${}ARGV}")
endmacro()


function (ROOT_STANDARD_LIBRARY_PACKAGE)
  show_args()
endfunction()


ROOT_STANDARD_LIBRARY_PACKAGE(Genetic
                              HEADERS Math/GeneticMinimizer.h
                              DICTIONARY_OPTIONS "-writeEmptyRootPCM"
                              DEPENDENCIES Core MathCore TMVA)

当前输出:

Genetic
Genetic;HEADERS;Math/GeneticMinimizer.h;DICTIONARY_OPTIONS;-writeEmptyRootPCM;DEPENDENCIES;Core;MathCore;TMVA

预期输出:

Genetic
- path: /path/to/file/directory
- deps: (all the DEPENDENCIES)

如何使用cmake脚本进行此操作。?

0 个答案:

没有答案