# ── Google Benchmark (FetchContent) ── include(FetchContent) find_package(benchmark QUIET) if(NOT benchmark_FOUND) set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "" FORCE) FetchContent_Declare( google_benchmark URL https://github.com/google/benchmark/archive/refs/tags/v1.8.3.tar.gz ) FetchContent_MakeAvailable(google_benchmark) endif() # ── Benchmark helper header ── # Provides vde::bench::measure_ms() chrono fallback if benchmark not available # (benchmark:: is still preferred when linked) # ── main entry ── add_executable(vde_bench bench_main.cpp ) target_link_libraries(vde_bench PRIVATE vde benchmark::benchmark) # ── BVH ── add_executable(vde_bench_bvh bench_main.cpp bench_bvh.cpp ) target_link_libraries(vde_bench_bvh PRIVATE vde benchmark::benchmark) # ── Delaunay ── add_executable(vde_bench_delaunay bench_main.cpp bench_delaunay.cpp ) target_link_libraries(vde_bench_delaunay PRIVATE vde benchmark::benchmark) # ── Boolean (needs all component libs because INTERFACE deps may not resolve) add_executable(vde_bench_boolean bench_main.cpp bench_boolean.cpp ) target_link_libraries(vde_bench_boolean PRIVATE vde_foundation vde_core vde_curves vde_mesh vde_spatial vde_collision vde_boolean vde_brep vde_sketch benchmark::benchmark ) # ── Curves ── add_executable(vde_bench_curves bench_main.cpp bench_curves.cpp ) target_link_libraries(vde_bench_curves PRIVATE vde benchmark::benchmark) # ── Spatial (R-Tree / KD-Tree) ── add_executable(vde_bench_spatial bench_main.cpp bench_spatial.cpp ) target_link_libraries(vde_bench_spatial PRIVATE vde benchmark::benchmark) # ── Convenience target: build all benchmarks ── add_custom_target(vde_benchmarks DEPENDS vde_bench vde_bench_bvh vde_bench_delaunay vde_bench_curves vde_bench_spatial COMMENT "All benchmarks built" ) # ── CTest integration: register benchmarks with optional args ── # Run individual benchmarks via: ctest -R bench_ enable_testing() add_test(NAME bench_bvh COMMAND vde_bench_bvh --benchmark_min_time=0.01s) add_test(NAME bench_delaunay COMMAND vde_bench_delaunay --benchmark_min_time=0.01s) add_test(NAME bench_boolean COMMAND vde_bench_boolean --benchmark_min_time=0.01s) add_test(NAME bench_curves COMMAND vde_bench_curves --benchmark_min_time=0.01s) add_test(NAME bench_spatial COMMAND vde_bench_spatial --benchmark_min_time=0.01s)