Добавляйте во все источники префикс src/ в Meson

#meson-build

#meson-сборка

Вопрос:

Относительно корня моего проекта, где находится meson.build, все мои исходные файлы находятся под src/ .

Возможно ли указать эти исходные файлы в meson.build таким образом, чтобы не заставлять меня добавлять ко всем ним префикс src/ , учитывая, что это несколько избыточно?

Ответ №1:

Добавлять префиксы в исходные файлы не нужно, поскольку meson предоставляет специальную функцию: files(), которая генерирует объект файлового массива, который «запоминает» подкаталог. Например, в корне meson.build вы можете иметь:

 subdir('src')
subdir('src_more')
exe = executable('test', sources)
  

В src/meson.build:

 sources = files('a1.c', 'a2.c')
  

И в src_more/meson.build:

 sources  = files('b1.c', 'b2.c')
  

Ответ №2:

Вам действительно следует поместить meson.build файл в src/ и создать там список.

Комментарии:

1. Даже когда я это делаю, Meson, похоже, все еще хочет, чтобы я указывал пути к файлам относительно корневого meson.build.

2. Это работает не так, возможно, вам потребуется опубликовать больше контекста.

Ответ №3:

На самом деле вы можете «собрать» массив файлов, используя foreach инструкцию:

 raw_sources = [
    'foo.cpp',
    'foomanager.cpp',
    'foofactory.cpp'
]
sources = []

foreach file : raw_sources
    full_path = join_paths('src', file)
    sources  = files(full_path)
endforeach
  

И теперь исходники содержат файлы с нужным префиксом.