我有项目的根目录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脚本进行此操作。?