Позвольте meson обрабатывать параметры конфигурации изначально вместо того, чтобы обойти это путем анализа параметров через config.h
.
В файле meson_options.txt
вы объявляете настраиваемые параметры конфигурации, такие как:
option('mode', type : 'combo', choices : ['one', 'two'], value : 'one')
Затем, когда вы настраиваете свою сборку, вы можете создавать отдельные каталоги сборки, вызывая:
meson buildOne -Dmode=one
ninja -C buildOne
и
meson buildTwo -Dmode=two
ninja -C buildTwo
Однако описанный выше подход может быть нежелательным?
Другой возможный метод - объявить несколько subproject()
. Если ваш текущий meson.build
не слишком конкретен c, вы можете попробовать следующее.
Имейте новый основной meson.build
, который занимается упаковкой, но также копирует шаблон meson.build в подгруппе каталог подпроекта, по одному для каждого режима. Для этого может потребоваться всего несколько дополнительных ../../
, чтобы компенсировать различную структуру сборки.
Хорошая вещь с объявлением подпроекта заключается в том, что вы можете переопределить параметры сборки для этого подпроекта. Фактически это означало бы, что у вас снова есть отдельные каталоги сборки, но только один основной каталог сборки, и вам нужно вызвать meson только один раз. части различного режима в специальных подпроектах / библиотеках.