# ── 编译选项接口目标 ────────────────────────────── # ── foundation ───────────────────────────────────── add_library(vde_foundation STATIC foundation/tolerance.cpp foundation/exact_predicates.cpp foundation/io_obj.cpp foundation/io_stl.cpp foundation/serializer.cpp foundation/io_ply.cpp foundation/io_gltf.cpp ) target_include_directories(vde_foundation PUBLIC ${CMAKE_SOURCE_DIR}/include PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ) target_link_libraries(vde_foundation PUBLIC vde_compile_options Eigen3::Eigen ) # ── core ─────────────────────────────────────────── add_library(vde_core STATIC core/point.cpp core/transform.cpp core/polygon.cpp core/voronoi.cpp core/distance.cpp core/convex_hull.cpp core/icp.cpp ) target_include_directories(vde_core PUBLIC ${CMAKE_SOURCE_DIR}/include PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ) target_link_libraries(vde_core PUBLIC vde_foundation vde_compile_options ) # ── curves ───────────────────────────────────────── add_library(vde_curves STATIC curves/bezier_curve.cpp curves/bspline_curve.cpp curves/nurbs_curve.cpp curves/bezier_surface.cpp curves/bspline_surface.cpp curves/tessellation.cpp ) target_include_directories(vde_curves PUBLIC ${CMAKE_SOURCE_DIR}/include PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ) target_link_libraries(vde_curves PUBLIC vde_core vde_compile_options ) # ── mesh ──────────────────────────────────────────── add_library(vde_mesh STATIC mesh/halfedge_mesh.cpp mesh/delaunay_2d.cpp mesh/cdt_2d.cpp mesh/delaunay_3d.cpp mesh/mesh_simplify.cpp mesh/mesh_smooth.cpp mesh/mesh_boolean.cpp mesh/mesh_quality.cpp mesh/mesh_repair.cpp mesh/alpha_shapes.cpp mesh/mesh_parameterize.cpp mesh/geodesic.cpp mesh/mesh_curvature.cpp mesh/marching_cubes.cpp ) target_include_directories(vde_mesh PUBLIC ${CMAKE_SOURCE_DIR}/include PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ) target_link_libraries(vde_mesh PUBLIC vde_core vde_compile_options ) # ── spatial ───────────────────────────────────────── add_library(vde_spatial STATIC spatial/bvh.cpp spatial/octree.cpp spatial/kd_tree.cpp spatial/r_tree.cpp ) target_include_directories(vde_spatial PUBLIC ${CMAKE_SOURCE_DIR}/include PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ) target_link_libraries(vde_spatial PUBLIC vde_core vde_compile_options ) # ── boolean ───────────────────────────────────────── add_library(vde_boolean STATIC boolean/boolean_2d.cpp boolean/boolean_mesh.cpp boolean/polygon_offset.cpp ) target_include_directories(vde_boolean PUBLIC ${CMAKE_SOURCE_DIR}/include PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ) target_link_libraries(vde_boolean PUBLIC vde_mesh vde_spatial vde_compile_options ) # ── collision ─────────────────────────────────────── add_library(vde_collision STATIC collision/gjk.cpp collision/sat.cpp collision/ray_intersect.cpp collision/tri_intersect.cpp ) target_include_directories(vde_collision PUBLIC ${CMAKE_SOURCE_DIR}/include PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ) target_link_libraries(vde_collision PUBLIC vde_core vde_spatial vde_compile_options ) # ── 聚合库 ────────────────────────────────────────── add_library(vde ${CMAKE_BUILD_TYPE_LIB}) target_link_libraries(vde PUBLIC vde_foundation PUBLIC vde_core PUBLIC vde_curves PUBLIC vde_mesh PUBLIC vde_spatial PUBLIC vde_boolean PUBLIC vde_collision PUBLIC vde_brep PUBLIC vde_sketch ) add_library(vde::engine ALIAS vde) # ── brep ─────────────────────────────────────────── add_library(vde_brep STATIC brep/brep.cpp brep/modeling.cpp ) target_include_directories(vde_brep PUBLIC ${CMAKE_SOURCE_DIR}/include PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ) target_link_libraries(vde_brep PUBLIC vde_curves vde_mesh vde_compile_options ) # ── sketch ───────────────────────────────────────── add_library(vde_sketch STATIC sketch/constraint_solver.cpp ) target_include_directories(vde_sketch PUBLIC ${CMAKE_SOURCE_DIR}/include PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ) target_link_libraries(vde_sketch PUBLIC vde_core vde_compile_options )