Files
ViewDesignEngine/src/CMakeLists.txt
T

211 lines
6.7 KiB
CMake
Raw Normal View History

# ── 编译选项接口目标 ──────────────────────────────
# ── 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/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/nurbs_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
2026-07-23 07:20:01 +00:00
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
)
# ── 聚合库 ──────────────────────────────────────────
2026-07-23 07:54:28 +00:00
add_library(vde INTERFACE)
target_link_libraries(vde
INTERFACE vde_foundation
INTERFACE vde_core
INTERFACE vde_curves
INTERFACE vde_mesh
INTERFACE vde_spatial
INTERFACE vde_boolean
INTERFACE vde_collision
INTERFACE vde_sdf
INTERFACE vde_brep
INTERFACE vde_sketch
)
add_library(vde::engine ALIAS vde)
2026-07-23 07:19:13 +00:00
# ── brep ───────────────────────────────────────────
add_library(vde_brep STATIC
brep/brep.cpp
brep/modeling.cpp
brep/step_export.cpp
brep/step_import.cpp
brep/iges_import.cpp
brep/iges_export.cpp
brep/brep_boolean.cpp
brep/brep_validate.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
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
)
# ── sdf ────────────────────────────────────────────
add_library(vde_sdf STATIC
sdf/sdf_primitives.cpp
sdf/sdf_tree.cpp
sdf/sdf_to_mesh.cpp
sdf/sdf_torch.cpp
sdf/sdf_optimize.cpp
)
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
)
# ── 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
)
# ── 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()