Выбор компилятора и настройка сборки
Выбор конкретного компилятора
Meson поддерживает стандартные переменные окружения CC, CXX и FC для выбора конкретных компиляторов C, C++ и/или Fortran. Эти переменные окружения описаны в таблицах справочника в документации Meson.
Обратите внимание, что переменные окружения применяются только при чистой сборке, так как они влияют на этап конфигурирования (т.е., meson setup). При инкрементной пересборке изменения переменных окружения не учитываются — необходимо выполнить git
clean -xdf и провести полную пересборку или выполнить meson setup --reconfigure.
Добавление пользовательских флагов компилятора или компоновщика
Meson по своему дизайну предпочитает настраивать сборку через параметры командной строки, передаваемые meson setup. Он предоставляет множество встроенных параметров:
- Для включения отладочной сборки и уровня оптимизации см. следующий раздел «Типы сборки»
- Включение
-Werrorв портативном режиме осуществляется с помощью-Dwerror=true, - Включение уровней предупреждений осуществляется с помощью
-Dwarning_level=<val>, где<val>— одно из значений{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 количеством физических ядер процессора, параллельных задач сборки. Это нормально в подавляющем большинстве случаев и приводит к почти оптимальному времени сборки. В некоторых случаях на машинах с небольшим объёмом оперативной памяти по сравнению с количеством ядер процессора это приводит к тому, что задача выходит за пределы памяти. В таком случае уменьшите количество задач N таким образом, чтобы у вас было не менее 2 ГБ оперативной памяти на задачу. Например, для запуска 6 задач:
python -m pip install . -Ccompile-args="-j6"
или:
spin build -j6
© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/building/compilers_and_options.html