Note
Платформозависимое руководство (Windows). Данный файл описывает сборку и запуск проекта на операционной системе Windows. Для сборки и тестирования в среде Linux (основной дев-контур проекта) используйте специализированное руководство Linux Build & Run Guide.
Дата фиксации: 2026-04-07 (Обновлено: 2026-07-11)
Этот документ фиксирует актуальный practical build/run path для ProjectV на Windows clang-cl mainline после
9.2 cleanup: какие presets считаются основными, как запускать automation loop и какие build options сейчас реально
поддерживаются.
Минимально ожидается:
- Windows;
- CMake
3.30+; - Ninja;
clang-cl;- Visual Studio Build Tools / MSVC headers and linker environment;
- Visual C++ Redistributable (
vcruntime140.dll,vcruntime140_1.dll,msvcp140.dll) — нужныProjectV.exeна runtime, потому чтоCMakeLists.txtявно не override'итCMAKE_MSVC_RUNTIME_LIBRARYи по дефолту это/MD(dynamic MSVC runtime). Либо поставь VC++ Redist с https://aka.ms/vs/17/release/vc_redist.x64.exe, либо пересобери со static runtime через-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded(тогда runtime влинкован вProjectV.exe, но это +20% к размеру ELF); - Vulkan SDK с
glslcилиglslangValidatorвPATH; - Git с поддержкой submodules.
Перед первой сборкой нужно инициализировать vendored dependencies:
git submodule update --init --recursiveЭто обязательно, потому что проект собирает SDL, volk, VMA, fmt, flecs, JoltPhysics, Tracy и другие
bundled зависимости.
Mainline теперь опирается на два явных configure preset:
windows-clang-debug— локальная dev-сборка;windows-clang-debug-ci— тот же debug toolchain, но зафиксированный как automation/CI entrypoint.
Оба preset'а явно включают:
BUILD_TESTING=ONPROJECTV_ENABLE_VALIDATION=ONPROJECTV_ENABLE_TRACY=ONPROJECTV_ENABLE_RENDERDOC_MARKERS=ON
Configure:
cmake --preset windows-clang-debug
cmake --preset windows-clang-debug-ciОтдельный windows-clang-debug-tracy-profiler остаётся opt-in tooling preset для Tracy instrumentation в
ProjectV.exe (без Tracy UI — UI теперь собирается standalone через tools/tracy-standalone/build-tracy-windows.ps1,
см. ниже). Не считается частью основного automation contour.
Для repeatable сборки теперь лучше использовать не ad-hoc target names, а preset'ы:
cmake --build --preset windows-clang-debug-build
cmake --build --preset windows-clang-debug-ci-buildОни явно собирают:
ProjectVProjectVTests
Важно:
- shader compilation встроена в target
ProjectVчерезglslcс fallback наglslangValidator; .spvblobs копируются post-build рядом сProjectV.exe;- проверки одного и того же build tree лучше гонять последовательно, а не несколькими параллельными
cmake --build.
Запуск unit/regression tests:
ctest --preset windows-clang-debug-tests
ctest --preset windows-clang-debug-ci-testsСейчас это проверяет не только VoxelWorld, но и interaction/physics glue path; тестовый target собирается с теми же
feature defines, что и runtime build, включая Tracy instrumentation when enabled.
Минимальный automation contour теперь зафиксирован в tools/windows/Invoke-ProjectVBuildChecks.ps1.
Локальный прогон dev loop:
powershell -ExecutionPolicy Bypass -File tools/windows/Invoke-ProjectVBuildChecks.ps1 `
-ConfigurePreset windows-clang-debug `
-BuildPreset windows-clang-debug-build `
-TestPreset windows-clang-debug-testsCI loop:
powershell -ExecutionPolicy Bypass -File tools/windows/Invoke-ProjectVBuildChecks.ps1По умолчанию скрипт использует windows-clang-debug-ci, windows-clang-debug-ci-build и
windows-clang-debug-ci-tests.
Прямой запуск:
build/windows-clang-debug/bin/ProjectV.exeSmoke по-прежнему живёт как PowerShell script и build target, но это targeted lifecycle check, а не обязательная проверка после каждого изменения. Используй его, когда менялись Vulkan/bootstrap/swapchain/window lifecycle, present/screenshot sync или есть риск device-lost/hang.
cmake --build --preset windows-clang-debug-smokeили:
powershell -ExecutionPolicy Bypass -File tools/windows/Invoke-ProjectVBuildChecks.ps1 `
-ConfigurePreset windows-clang-debug `
-BuildPreset windows-clang-debug-build `
-TestPreset windows-clang-debug-tests `
-RunSmokeSmoke проверяет:
- открытие окна;
- resize;
- minimize/restore;
- maximize/restore;
- graceful shutdown.
Опционально можно запустить полный LookDev capture flow (только Windows PowerShell, эквивалент Linux-варианта
в tools/linux/Invoke-ProjectVRuntimeSmoke.sh:120-126):
powershell -ExecutionPolicy Bypass -File tools/windows/Invoke-ProjectVRuntimeSmoke.ps1 `
-ExePath build\windows-clang-debug\bin\ProjectV.exe `
-CaptureDir build\windows-clang-debug\lookdev-captures\$(Get-Date -Format yyyy-MM-dd) `
-Views 'FINAL SHDW CTSH AOCC LOCL' `
-CameraPosition '-25 19 25' `
-CameraLook '0.62 -0.48 -0.62' `
-WarmupFrames 30 -IntervalFrames 2 -QuitAfterCaptureСкрипт выставит PROJECTV_SCREENSHOT_DIR, PROJECTV_START_CAMERA_*, PROJECTV_LOOKDEV_CAPTURE_* env vars,
дождётся graceful shutdown и проверит, что ожидаемое число .bmp + .txt пар (default 6 видов × 2 = 12 файлов)
лежит в $CaptureDir. Без -CaptureDir поведение остаётся прежним — только lifecycle window dance.
Smoke почти не доказывает корректность gameplay, lighting/material look, shadow quality или shader tuning. Для таких изменений основной сигнал — unit tests, replay/scripted captures, sidecar metadata и осмысленная визуальная проверка.
Автоматический probe path:
powershell -ExecutionPolicy Bypass -File tools/windows/Invoke-ProjectVFailureProbes.ps1Сейчас он проверяет два сценария:
- missing shader blobs через пустой
PROJECTV_SHADER_BASE_DIR; - intentional incomplete init через
PROJECTV_FAIL_INIT_STAGE=before_voxel_meshing_pipeline.
Текущие user-facing CMake options:
PROJECTV_ENABLE_VALIDATION— включает Vulkan validation layers.PROJECTV_ENABLE_TRACY— включает Tracy instrumentation и для runtime, и для тестового target.- Dear ImGui HUD — всегда включён (CMake force
PROJECTV_ENABLE_IMGUI=ON); SDL3+Vulkan backends. PROJECTV_ENABLE_RENDERDOC_MARKERS— включает Vulkan debug names/markers path для RenderDoc-compatible captures.PROJECTV_BUILD_TRACY_PROFILER— собирает bundled Tracy profiler UI; использовать только когда это реально нужно.
Пример ручного override:
cmake --preset windows-clang-debug -DPROJECTV_ENABLE_TRACY=OFF -DPROJECTV_ENABLE_VALIDATION=OFFProjectV поддерживает builtin scene presets через runtime env var PROJECTV_SCENE_PRESET.
Пример:
$env:PROJECTV_SCENE_PRESET = "FlatBenchmark"
build/windows-clang-debug/bin/ProjectV.exe
Remove-Item Env:PROJECTV_SCENE_PRESETПоддерживаемые preset names:
VoxelLabFlatBenchmarkTransparencyStressChunkGridMeshingStress
Это current practical путь для reproducible perf runs до появления полноценного save/load и benchmark automation.
windows-clang-debug-tracy-profiler нужен только тогда, когда хочется собрать ещё и bundled Tracy profiler UI:
cmake --preset windows-clang-debug-tracy-profiler
cmake --build build/windows-clang-debug-tracy-profiler --target ProjectV tracy-profiler.exeБинарники после этого лежат здесь:
build/windows-clang-debug-tracy-profiler/bin/ProjectV.exebuild/windows-clang-debug-tracy-profiler/bin/tracy-profiler.exe
Важно:
- этот preset тянет отдельный FetchContent/CPM dependency graph для profiler UI;
- он не входит в mainline CI;
- для repeatable day-to-day build/test path использовать нужно
windows-clang-debugилиwindows-clang-debug-ci.
Проект компилирует shaders через glslc и при его отсутствии fallback'ается на glslangValidator.
Если configure падает на этом шаге:
- проверь, что установлен Vulkan SDK;
- проверь, что хотя бы один из этих инструментов доступен в
PATH.
Если приложение не находит shader blob:
- сначала пересобери
ProjectVилиwindows-clang-debug-build; - затем проверь, что post-build copy отработал и
.spvлежат рядом с бинарником; - не запускай exe из дерева, где не было актуального build step.
Если build внезапно ломается после переключения веток:
- сначала проверь
git status --short; - затем при необходимости снова синхронизируй submodules через
git submodule update --init --recursive.
- Documentation Index — карта всех руководств
- Linux Build & Run Guide (Основное руководство по Linux)
- ArchitectureGuide
- Debugging
- Profiling
- Source Layout Guide