Как я могу объединить несколько файлов в один в Meson?

У меня проблемы с базовой задачей в Meson, когда мне нужно объединить несколько файлов в один во время сборки; по сути:

cat *.txt > compiled.txt

or

cat foo.txt bar.txt baz.txt > compiled.txt

Однако независимо от того, использую ли я custom_target(), generator() или любую другую функцию, Meson либо не может найти compiled.txt, либо не может обрабатывать переход от нескольких входных файлов к одному выходному файлу.

Есть ли простой способ добиться этого?

Обновление:

Используя run_command(), мне удалось собрать compiled.txt, и он появился в исходном каталоге. В конечном итоге я хочу, чтобы compiled.txt (который я перечислил в gresource.xml) компилировал gnome.compile_resources(). Есть ли способ запустить эту команду и передать файл непосредственно этой функции для обработки?


person andy.holmes    schedule 08.07.2017    source источник


Ответы (2)


Используйте custom_target(), передайте вывод в dependencies из gnome.compile_resources(). Обратите внимание, что вам понадобится достаточно свежая glib, чтобы она работала.

См. Также: http://mesonbuild.com/Gnome-module.html#gnomecompile_resources

person TingPing    schedule 10.07.2017

Решение перенесено от вопроса к ответу:

Решение:

В итоге я не использовал gresources, но мне все еще нужно было это решение для объединения файлов.

cat_prog = find_program('cat')

parts_of_the_whole = files(
  'part1.txt',
  'part2.txt'
)

concat_parts = custom_target(
  'concat-parts',
  command: [ cat_prog, '@INPUT@' ],
  capture: true,
  input: parts_of_the_whole,
  output: 'compiled.txt',
  install_dir: appdatadir,
  install: true,
  build_by_default: true
)
person Community    schedule 14.07.2017