У меня есть корневой каталог проекта 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)
присутствует во всех файлах subdir и нуждается в формате
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 .?