用途:在 eBPF for Windows 仓库中执行构建、编译、重建、还原或清理操作,可构建整个解决方案或单个组件(驱动、库、工具、测试等)。
环境要求:需使用 Visual Studio Developer PowerShell(普通 PowerShell 缺少构建环境变量),使用 VS Build Tools 的 MSBuild,且必须在解决方案根目录(ebpf-for-windows.sln 所在位置)运行。
主要能力:支持 Debug、Release、NativeOnlyDebug、NativeOnlyRelease、FuzzerDebug 配置,平台为 x64 或 ARM64,默认 Debug 与 x64。始终使用解决方案文件构建,不直接构建 .vcxproj;用 /m 并行构建;首次或包变更时加 -Restore;清理重建用 /t:"target:clean,target"。提供组件到 MSBuild /t: 目标的映射表,覆盖驱动、DLL 与服务、库、工具、测试、压力测试与模糊测试、外部依赖、构建工具与安装包。
使用方式:先确定构建对象、配置与平台,再构造并运行 MSBuild 命令,例如 msbuild ebpf-for-windows.sln /m /p:Configuration=Debug /p:Platform=x64。克隆或重置子模块后需先运行 .\scripts\initialize_ebpf_repo.ps1 初始化子模块、生成 cmake 项目并还原 NuGet。构建产物位于 x64\Debug\ 等目录。
限制与注意:FuzzerDebug 专属目标在 Debug/Release 下会报 MSB4057;缺少 cmake 生成项目会报 MSB3202;msbuild /t:clean 在 cmake 项目未生成时会失败;父仓库 git stash 不影响子模块工作树。手动用 clang 编译 BPF 程序需使用完整 include 路径,仅用 -Iinclude 会失败。