Выбор компилятора и настройка сборки#
Выбор конкретного компилятора#
Meson поддерживает стандартные переменные окружения CC, CXX и FC для выбора конкретных компиляторов C, C++ и/или Fortran. Эти переменные окружения документированы в справочные таблицы в документации Meson.
Обратите внимание, что переменные окружения применяются только при чистой сборке, потому что они влияют на этап конфигурации (т.е., meson setup). Инкрементная пересборка
не реагирует на изменения в переменных окружения - необходимо запустить git
clean -xdf и выполнить полную пересборку, или запустить meson setup --reconfigure.
Добавление пользовательского флага компилятора или компоновщика#
Meson по дизайну предпочитает настройку сборок через параметры командной строки,
передаваемые в meson setup. Он предоставляет множество встроенных опций:
Для включения отладочной сборки и уровня оптимизации см. следующий раздел о "типах сборки".
Включение
-Werrorв переносимом виде осуществляется через-Dwerror=true,Включение уровней предупреждений осуществляется через
-Dwarning_level=, содин из{0, 1, 2, 3, everything},Существует множество других встроенных опций, от активации Visual Studio (
-Dvsenv=true) и сборка с оптимизацией времени линковки (-Db_lto) для изменения уровня языка C++ по умолчанию (-Dcpp_std='c++17') или флаги компоновщика (-Dcpp_link_args='-Wl,-z,defs').
Для полного обзора опций см. Страница документации встроенных опций Meson.
Meson также поддерживает стандартные переменные окружения CFLAGS,
CXXFLAGS, FFLAGS и LDFLAGS для добавления дополнительных флагов - с той же оговоркой, что и в предыдущем разделе, о том, что эти переменные окружения учитываются только при чистой сборке, а не при инкрементной.
Использование различных типов сборки с Meson#
Meson предоставляет различные типы сборки при настройке проекта. Вы можете увидеть доступные опции для типов сборки в раздел "основные опции" документации Meson.
Предполагая, что вы начинаете с нуля (не git clean -xdf если необходимо),
вы можете настроить сборку следующим образом, чтобы использовать debug тип сборки:
spin build -- -Dbuildtype=debug
Теперь вы можете использовать spin интерфейс для дальнейшей сборки, установки и тестирования NumPy как обычно:
spin test -s linalg
Это будет работать, потому что после начальной конфигурации Meson запомнит параметры конфигурации.
Управление параллелизмом сборки#
По умолчанию, ninja запустит 2*n_cpu + 2, с n_cpu количеством
физических ядер CPU, параллельных заданий сборки. Это подходит в подавляющем большинстве
случаев и обеспечивает близкое к оптимальному время сборки. В некоторых случаях, на машинах
с небольшим объемом ОЗУ относительно количества ядер CPU, это может привести к
исчерпанию памяти заданием. Если это происходит, уменьшите количество заданий N
таким образом, чтобы у вас было не менее 2 ГБ ОЗУ на задачу. Например, для запуска 6 задач:
python -m pip install . -Ccompile-args="-j6"
или:
spin build -j6