Clause
← Уся документація

Перекладено з англійського оригіналу · 06042fa · 2026-10-09 · Читати англійською

Збирання компілятора

З кореня репозиторію:

cmake --preset debug
cmake --build --preset debug

У Windows використовуйте пресет clang-cl/Ninja Multi-Config з оболонки розробника:

cmake --preset windows
cmake --build --preset windows-debug
cmake --build --preset windows-release

Тести та їхні допоміжні виконувані файли вмикаються за бажанням. Для тестування налаштуйте їх явно:

cmake --preset debug -DBUILD_TESTING=ON
cmake --build --preset debug
ctest --preset debug --no-tests=error

У Windows:

cmake --preset windows -DBUILD_TESTING=ON
cmake --build --preset windows-debug
ctest --preset windows-debug --no-tests=error
cmake --build --preset windows-release
ctest --preset windows-release --no-tests=error

Тести мають два режими, що вибираються через CLAUSE_TEST_MODE:

ctest --preset debug-fast            # or windows-debug-fast; tests use half the logical CPUs
ctest --preset debug -j 32           # full mode; -j N runs N/2 tests at once
make test                            # fast; make test-full or TEST_MODE=full for full

make-test.bat дотримується тих самих налаштувань TEST_MODE (за замовчуванням fast) і TEST_JOBS (за замовчуванням усі логічні процесори). Кожен тест резервує два слоти процесора CTest (PROCESSORS 2), тож за кількості слотів N одночасно виконується щонайбільше N/2 тестів, що лишає місце для компіляторів і вкладених нативних збирань, які запускають тести. На хості Windows x64 з 32 потоками швидкий режим триває близько хвилини, а повний — близько 85 секунд із 16 завданнями (729 секунд послідовно).

Для каталогу збирання без пресету передайте -DBUILD_TESTING=ON у cmake -S . -B <dir> для тестування. CMake кешує це налаштування; передайте -DBUILD_TESTING=OFF, коли повторно використовуєте цей каталог для звичайних збирань. Звичайні пресети та обгортки збирання встановлюють його в OFF.

Пакетні скрипти віддзеркалюють цілі Makefile build, format і clean: make-build.bat, make-test.bat, make-format.bat і make-clean.bat. Скрипти збирання і тестування налаштовують clang-cl з Ninja Multi-Config, як пресет windows, самостійно входячи в середовище Visual Studio x64, коли оболонка не є оболонкою розробника, і додаючи %ProgramFiles%\LLVM\bin до PATH, коли clang-cl відсутній. Каталог збирання, налаштований з іншим генератором або компілятором, переналаштовується з нуля; задайте CLAUSE_TOOLCHAIN=default, щоб зберегти власний вибір CMake (наприклад, MSVC cl в окремому каталозі). Значення збирання за замовчуванням: BUILD_DIR=build/debug, BUILD_TYPE=Debug і паралелізм нативного інструмента збирання (перевизначається через JOBS=N); змінні середовища CMAKE, CTEST, CMAKE_ARGS і CLANG_FORMAT також перевизначають відповідні інструменти/параметри. make-test.bat налаштовує збирання з увімкненим тестуванням, збирає всі цілі, потім запускає CTest, як і make test, і передає далі невдачі конфігурування, збирання або тестів. Очищення видаляє локальні для репозиторію каталоги build/ і cmake-build*/.

Перевірки якості та форматування за замовчуванням стосуються змінених файлів: усього, що в робочому дереві відрізняється від HEAD, а також невідстежуваних файлів.

Інструменти перевірки якості містяться в ігнорованому середовищі .venv-quality/, версії зафіксовано в tools/requirements-quality.txt: python -m venv .venv-quality, потім .venv-quality/Scripts/python -m pip install -r tools/requirements-quality.txt (.venv-quality/bin/python поза Windows).

clau.bat --help спочатку виконує збирання, а потім передає всі аргументи виконуваному файлу вибраної конфігурації. Невдачі збирання зупиняють виконання; шляхи вхідних файлів компілятора лишаються відносними до робочого каталогу викликача, а його код виходу зберігається.

Для розробки runtime без завантаження чи використання C++ SDK LLVM налаштовуйте з cmake --preset windows -DCLAUSE_BUILD_COMPILER=OFF; застосовуються ті самі пресети збирання/тестування. Поверніть параметр у ON, коли SDK стане доступним. MSVC cl також приймається в окремому каталозі збирання; MinGW не підтримується для нативних збирань розробки у Windows. Вибирайте x86 або x64 через середовище розробника (або -A з генератором Visual Studio) і використовуйте SDK LLVM та runtime тієї самої архітектури.

CRT за замовчуванням у Windows — /MDd для Debug і /MD для інших конфігурацій, зокрема для статичної бібліотеки runtime та її споживачів. Явно задане налаштування CMAKE_MSVC_RUNTIME_LIBRARY зберігається; воно має відповідати SDK LLVM і всім скомпонованим бібліотекам C++. Уникайте змішування артефактів STL/CRT для Debug і Release. Вихідні файли проєкту у Windows і фікстури CLI/шляхів використовують UTF-8.

Усі цілі проєкту використовують C++23 і трактують попередження компілятора як помилки. Виконуваний файл — build/debug/bin/clau. Пресети та обгортки збирання запитують паралельні збирання у Windows, Linux і macOS з типовою для нативного інструмента збирання кількістю завдань (jobs: 0 у пресетах, --parallel в обгортках). Задайте явне обмеження через cmake --build --preset debug --parallel 8 або JOBS=8 для обгорток. Для каталогу збирання без пресету використовуйте cmake --build <dir> --parallel. Пресет Windows розміщує виконуваний файл у build/windows/bin/<Config>/clau.exe, а runtime — у build/windows/lib/<Config>/clause_runtime.lib.

Як альтернативу використовуйте make build, щоб зібрати лише clau та його залежності, або make test, щоб зібрати й запустити повний набір тестів. Для іншої конфігурації:

make test BUILD_DIR=build/release BUILD_TYPE=Release JOBS=4

CMake знаходить встановлені Boost і Erlang, зокрема встановлення Homebrew. Щоб перевизначити значення за замовчуванням, передайте під час конфігурування такі параметри:

ПараметрПризначення
-DCLAUSE_BOOST_ROOT=/path/to/boostВибрати встановлення Boost або повне дерево вихідних кодів
-DCLAUSE_TOML_ROOT=/path/to/tomlplusplus-3.4.0Вибрати зафіксовану залежність TOML
-DCLAUSE_OTP_AUDITS=ONУвімкнути необов'язкові живі аудити OTP/еталона; за замовчуванням OFF
-DCLAUSE_ESCRIPT=/path/to/bin/escriptВибрати OTP 29+ для необов'язкових аудитів; звичайні тести не використовують
-DCLAUSE_CLANG_EXECUTABLE=C:/path/to/clang.exeВибрати встановлений виконуваний файл Clang для Windows
-DLLVM_DIR=/prefix/lib/cmake/llvmВибрати наявний SDK LLVM 23.1.x (недійсні явні шляхи дають помилку)
-DCLAUSE_DOWNLOAD_LLVM=OFFВимагати встановлений SDK; вимкнути автоматичні завантаження LLVM
-DBUILD_TESTING=ONУвімкнути тести, допоміжні виконувані файли та їхню залежність від Erlang (за замовчуванням: OFF)
-DCLAUSE_BUILD_COMPILER=OFFЗібрати лише бібліотеку runtime
-DCLAUSE_BUILD_RUNTIME=OFFЗібрати лише компілятор

Для генераторів із кількома конфігураціями додавайте --config Debug під час збирання і -C Debug під час тестування. IDE з підтримкою CMake можуть відкривати репозиторій з пресетом debug або з пресетом windows і інструментарієм розробки Visual Studio.

Заголовки Boost і toml++ використовують включення CMake SYSTEM, зберігаючи режим «попередження як помилки» для коду проєкту. У нативних збираннях для macOS CMake також позначає зв'язаний каталог включень Homebrew як SYSTEM, коли його заголовки Boost відповідають вибраному встановленню. Це не дає успадкованим прапорцям, як-от CXXFLAGS=-I/opt/homebrew/include, виявляти попередження Boost, зокрема коли цей прапорець уже закешовано CMake. Для інших встановлень уникайте додавання шляхів залежностей через глобальні прапорці -I (зокрема CXXFLAGS): звичайний шлях включення може мати пріоритет над системним шляхом залежності. Якщо CLion повідомляє про попередження Boost як про помилки, приберіть ці глобальні прапорці та очистіть кешоване значення, наприклад:

cmake -S . -B cmake-build-debug -DCMAKE_CXX_FLAGS:STRING=

Потім перезавантажте CMake у CLion. Щоб вибрати встановлення, використовуйте наведені вище параметри коренів залежностей замість додавання глобальних прапорців включення.