2026-07-23 05:27:51 +00:00
|
|
|
# ── 编译选项接口目标 ──────────────────────────────
|
|
|
|
|
|
|
|
|
|
# ── foundation ─────────────────────────────────────
|
|
|
|
|
add_library(vde_foundation STATIC
|
|
|
|
|
foundation/tolerance.cpp
|
|
|
|
|
foundation/exact_predicates.cpp
|
|
|
|
|
foundation/io_obj.cpp
|
|
|
|
|
foundation/io_stl.cpp
|
2026-07-23 06:27:43 +00:00
|
|
|
foundation/serializer.cpp
|
2026-07-23 07:33:15 +00:00
|
|
|
foundation/io_ply.cpp
|
|
|
|
|
foundation/io_gltf.cpp
|
2026-07-24 11:30:36 +00:00
|
|
|
foundation/io_3mf.cpp
|
2026-07-26 18:41:28 +08:00
|
|
|
foundation/industrial_formats.cpp
|
2026-07-23 05:27:51 +00:00
|
|
|
)
|
|
|
|
|
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/polygon.cpp
|
2026-07-23 06:27:43 +00:00
|
|
|
core/voronoi.cpp
|
2026-07-23 05:27:51 +00:00
|
|
|
core/distance.cpp
|
|
|
|
|
core/convex_hull.cpp
|
2026-07-23 07:33:15 +00:00
|
|
|
core/icp.cpp
|
2026-07-24 13:23:02 +00:00
|
|
|
core/cam_toolpath.cpp
|
2026-07-26 17:28:15 +08:00
|
|
|
core/exact_predicates.cpp
|
2026-07-23 05:27:51 +00:00
|
|
|
)
|
|
|
|
|
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
|
2026-07-23 15:39:24 +00:00
|
|
|
curves/nurbs_surface.cpp
|
2026-07-24 10:11:59 +00:00
|
|
|
curves/nurbs_operations.cpp
|
2026-07-24 13:07:45 +00:00
|
|
|
curves/surface_intersection.cpp
|
2026-07-23 05:27:51 +00:00
|
|
|
curves/tessellation.cpp
|
2026-07-26 17:28:15 +08:00
|
|
|
curves/parallel_intersection.cpp
|
2026-07-26 18:41:28 +08:00
|
|
|
curves/surface_fairing.cpp
|
|
|
|
|
curves/exact_offset.cpp
|
2026-07-23 05:27:51 +00:00
|
|
|
)
|
|
|
|
|
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
|
2026-07-23 07:04:11 +00:00
|
|
|
mesh/cdt_2d.cpp
|
2026-07-23 06:28:34 +00:00
|
|
|
mesh/delaunay_3d.cpp
|
2026-07-23 05:27:51 +00:00
|
|
|
mesh/mesh_simplify.cpp
|
|
|
|
|
mesh/mesh_smooth.cpp
|
|
|
|
|
mesh/mesh_boolean.cpp
|
|
|
|
|
mesh/mesh_quality.cpp
|
|
|
|
|
mesh/mesh_repair.cpp
|
2026-07-23 07:20:01 +00:00
|
|
|
mesh/alpha_shapes.cpp
|
|
|
|
|
mesh/mesh_parameterize.cpp
|
2026-07-23 07:04:11 +00:00
|
|
|
mesh/geodesic.cpp
|
2026-07-23 06:27:43 +00:00
|
|
|
mesh/mesh_curvature.cpp
|
|
|
|
|
mesh/marching_cubes.cpp
|
2026-07-24 16:14:09 +00:00
|
|
|
mesh/mesh_lod.cpp
|
2026-07-26 17:28:15 +08:00
|
|
|
mesh/parallel_mc.cpp
|
2026-07-23 05:27:51 +00:00
|
|
|
)
|
|
|
|
|
target_include_directories(vde_mesh
|
|
|
|
|
PUBLIC ${CMAKE_SOURCE_DIR}/include
|
|
|
|
|
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
|
|
|
|
|
)
|
|
|
|
|
target_link_libraries(vde_mesh
|
2026-07-25 00:02:48 +00:00
|
|
|
PUBLIC vde_core vde_brep vde_compile_options
|
2026-07-23 05:27:51 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# ── spatial ─────────────────────────────────────────
|
|
|
|
|
add_library(vde_spatial STATIC
|
|
|
|
|
spatial/bvh.cpp
|
|
|
|
|
spatial/octree.cpp
|
|
|
|
|
spatial/kd_tree.cpp
|
|
|
|
|
spatial/r_tree.cpp
|
2026-07-24 16:14:09 +00:00
|
|
|
spatial/incremental_bvh.cpp
|
2026-07-23 05:27:51 +00:00
|
|
|
)
|
|
|
|
|
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
|
2026-07-23 06:28:34 +00:00
|
|
|
boolean/polygon_offset.cpp
|
2026-07-23 05:27:51 +00:00
|
|
|
)
|
|
|
|
|
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
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# ── 聚合库 ──────────────────────────────────────────
|
2026-07-23 07:54:28 +00:00
|
|
|
add_library(vde INTERFACE)
|
2026-07-23 05:27:51 +00:00
|
|
|
target_link_libraries(vde
|
2026-07-23 08:19:24 +00:00
|
|
|
INTERFACE vde_foundation
|
|
|
|
|
INTERFACE vde_core
|
|
|
|
|
INTERFACE vde_curves
|
|
|
|
|
INTERFACE vde_mesh
|
|
|
|
|
INTERFACE vde_spatial
|
|
|
|
|
INTERFACE vde_boolean
|
|
|
|
|
INTERFACE vde_collision
|
2026-07-24 07:02:03 +00:00
|
|
|
INTERFACE vde_sdf
|
2026-07-23 08:19:24 +00:00
|
|
|
INTERFACE vde_brep
|
|
|
|
|
INTERFACE vde_sketch
|
2026-07-23 05:27:51 +00:00
|
|
|
)
|
|
|
|
|
add_library(vde::engine ALIAS vde)
|
2026-07-23 07:19:13 +00:00
|
|
|
|
|
|
|
|
# ── brep ───────────────────────────────────────────
|
|
|
|
|
add_library(vde_brep STATIC
|
|
|
|
|
brep/brep.cpp
|
2026-07-25 02:25:55 +00:00
|
|
|
brep/interference_check.cpp
|
2026-07-25 02:31:51 +00:00
|
|
|
brep/motion_simulation.cpp
|
2026-07-25 03:18:43 +00:00
|
|
|
brep/explode_view.cpp
|
2026-07-25 03:25:06 +00:00
|
|
|
brep/gdt.cpp
|
2026-07-25 03:51:57 +00:00
|
|
|
brep/incremental_update.cpp
|
|
|
|
|
brep/large_assembly.cpp
|
|
|
|
|
brep/format_io.cpp
|
2026-07-25 04:07:24 +00:00
|
|
|
brep/tolerance.cpp
|
2026-07-23 07:19:13 +00:00
|
|
|
brep/modeling.cpp
|
2026-07-24 15:23:30 +00:00
|
|
|
brep/brep_drawing.cpp
|
2026-07-24 05:18:52 +00:00
|
|
|
brep/step_export.cpp
|
|
|
|
|
brep/step_import.cpp
|
2026-07-24 07:34:27 +00:00
|
|
|
brep/iges_import.cpp
|
|
|
|
|
brep/iges_export.cpp
|
2026-07-24 05:18:52 +00:00
|
|
|
brep/brep_boolean.cpp
|
|
|
|
|
brep/brep_validate.cpp
|
2026-07-24 15:15:53 +00:00
|
|
|
brep/brep_heal.cpp
|
2026-07-24 12:48:42 +00:00
|
|
|
brep/brep_face_split.cpp
|
2026-07-24 14:02:24 +00:00
|
|
|
brep/feature_tree.cpp
|
|
|
|
|
brep/assembly_constraints.cpp
|
2026-07-24 16:12:36 +00:00
|
|
|
brep/constraint_solver.cpp
|
2026-07-24 14:02:24 +00:00
|
|
|
brep/measure.cpp
|
2026-07-24 14:25:51 +00:00
|
|
|
brep/trimmed_surface.cpp
|
2026-07-26 16:42:55 +08:00
|
|
|
brep/dxf_import.cpp
|
2026-07-24 15:36:42 +00:00
|
|
|
brep/assembly_instance.cpp
|
2026-07-26 16:42:55 +08:00
|
|
|
brep/euler_op.cpp
|
2026-07-26 17:14:03 +08:00
|
|
|
brep/draft_analysis.cpp
|
|
|
|
|
brep/incremental_mesh.cpp
|
|
|
|
|
brep/kinematic_chain.cpp
|
2026-07-26 17:28:15 +08:00
|
|
|
brep/parallel_boolean.cpp
|
2026-07-26 18:41:28 +08:00
|
|
|
brep/feature_recognition.cpp
|
|
|
|
|
brep/defeature.cpp
|
|
|
|
|
brep/advanced_blend.cpp
|
|
|
|
|
brep/assembly_feature.cpp
|
|
|
|
|
brep/fastener_library.cpp
|
|
|
|
|
brep/flexible_assembly.cpp
|
2026-07-23 07:19:13 +00:00
|
|
|
)
|
|
|
|
|
target_include_directories(vde_brep
|
|
|
|
|
PUBLIC ${CMAKE_SOURCE_DIR}/include
|
|
|
|
|
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
|
|
|
|
|
)
|
|
|
|
|
target_link_libraries(vde_brep
|
2026-07-25 00:02:48 +00:00
|
|
|
PUBLIC vde_curves vde_mesh vde_collision vde_compile_options
|
2026-07-23 07:19:13 +00:00
|
|
|
)
|
2026-07-23 07:33:15 +00:00
|
|
|
|
|
|
|
|
# ── 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
|
|
|
|
|
)
|
2026-07-23 09:06:18 +00:00
|
|
|
|
2026-07-24 07:04:55 +00:00
|
|
|
# ── sdf ────────────────────────────────────────────
|
|
|
|
|
add_library(vde_sdf STATIC
|
|
|
|
|
sdf/sdf_primitives.cpp
|
|
|
|
|
sdf/sdf_tree.cpp
|
|
|
|
|
sdf/sdf_to_mesh.cpp
|
2026-07-24 07:20:45 +00:00
|
|
|
sdf/sdf_torch.cpp
|
2026-07-24 07:23:28 +00:00
|
|
|
sdf/sdf_optimize.cpp
|
2026-07-24 07:04:55 +00:00
|
|
|
)
|
|
|
|
|
target_include_directories(vde_sdf
|
|
|
|
|
PUBLIC ${CMAKE_SOURCE_DIR}/include
|
|
|
|
|
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
|
|
|
|
|
)
|
|
|
|
|
target_link_libraries(vde_sdf
|
|
|
|
|
PUBLIC vde_core vde_mesh vde_compile_options
|
|
|
|
|
)
|
|
|
|
|
|
2026-07-23 09:06:18 +00:00
|
|
|
# ── C API ──────────────────────────────────────────
|
|
|
|
|
add_library(vde_capi STATIC
|
|
|
|
|
capi/vde_capi.cpp
|
|
|
|
|
)
|
|
|
|
|
target_include_directories(vde_capi
|
|
|
|
|
PUBLIC ${CMAKE_SOURCE_DIR}/include
|
|
|
|
|
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
|
|
|
|
|
)
|
|
|
|
|
target_link_libraries(vde_capi
|
|
|
|
|
PUBLIC vde_brep vde_sketch vde_collision vde_boolean vde_spatial
|
|
|
|
|
PUBLIC vde_mesh vde_curves vde_core vde_foundation vde_compile_options
|
|
|
|
|
)
|
2026-07-23 10:32:51 +00:00
|
|
|
|
|
|
|
|
# ── GMP exact predicates (optional) ──
|
|
|
|
|
if(VDE_USE_GMP)
|
|
|
|
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
|
|
|
|
find_package(GMP REQUIRED)
|
|
|
|
|
target_compile_definitions(vde_foundation PUBLIC VDE_USE_GMP)
|
|
|
|
|
target_include_directories(vde_foundation PUBLIC ${GMP_INCLUDE_DIRS})
|
|
|
|
|
target_link_libraries(vde_foundation PUBLIC ${GMP_LIBRARIES})
|
|
|
|
|
message(STATUS "GMP exact arithmetic: ${GMP_INCLUDE_DIRS}")
|
|
|
|
|
else()
|
|
|
|
|
message(STATUS "GMP disabled (-DVDE_USE_GMP=ON to enable)")
|
|
|
|
|
endif()
|
2026-07-24 15:36:42 +00:00
|
|
|
|
|
|
|
|
# ── OpenMP parallelization ──
|
|
|
|
|
if(VDE_USE_OPENMP)
|
|
|
|
|
find_package(OpenMP)
|
|
|
|
|
if(OpenMP_CXX_FOUND)
|
|
|
|
|
target_link_libraries(vde_brep PUBLIC OpenMP::OpenMP_CXX)
|
|
|
|
|
target_compile_definitions(vde_brep PUBLIC VDE_USE_OPENMP)
|
|
|
|
|
message(STATUS "OpenMP enabled")
|
|
|
|
|
else()
|
|
|
|
|
message(STATUS "OpenMP not found (parallelism disabled)")
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|