299 lines
9.8 KiB
CMake
299 lines
9.8 KiB
CMake
# Copyright 2019, 2020, Collabora, Ltd.
|
|
# Copyright 2019, 2021, Visual Computing Lab, ISTI - Italian National Research Council
|
|
# SPDX-License-Identifier: BSL-1.0
|
|
|
|
cmake_minimum_required(VERSION 3.10)
|
|
project(VCGLib)
|
|
|
|
# Eigen options
|
|
option(ALLOW_BUNDLED_EIGEN "Allow use of bundled Eigen source" ON)
|
|
option(ALLOW_SYSTEM_EIGEN "Allow use of system-provided Eigen" ON)
|
|
|
|
# VCG options
|
|
option(VCG_HEADER_ONLY "Use VCG library in header only mode" ON)
|
|
option(VCG_BUILD_EXAMPLES "Build a set of examples of the library" OFF)
|
|
|
|
set (VCG_INCLUDE_DIRS ${CMAKE_CURRENT_LIST_DIR})
|
|
set (VCG_INCLUDE_DIRS ${CMAKE_CURRENT_LIST_DIR} PARENT_SCOPE)
|
|
|
|
### Build settings
|
|
set(CMAKE_CXX_STANDARD 11)
|
|
|
|
### Eigen
|
|
set(VCG_EIGEN_DIR ${CMAKE_CURRENT_LIST_DIR}/eigenlib)
|
|
|
|
if(ALLOW_SYSTEM_EIGEN AND EIGEN3_INCLUDE_DIR)
|
|
message(STATUS "- Eigen - using system-provided library")
|
|
set(EIGEN_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR})
|
|
elseif(ALLOW_BUNDLED_EIGEN AND EXISTS "${VCG_EIGEN_DIR}/Eigen/Eigen")
|
|
message(STATUS "- Eigen - using bundled source")
|
|
set(EIGEN_INCLUDE_DIRS ${VCG_EIGEN_DIR})
|
|
else()
|
|
message(
|
|
FATAL_ERROR
|
|
"Eigen is required - at least one of ALLOW_SYSTEM_EIGEN or ALLOW_BUNDLED_EIGEN must be enabled and found.")
|
|
endif()
|
|
|
|
### VCGLib headers and sources
|
|
|
|
set(VCG_HEADERS
|
|
vcg/complex/append.h
|
|
vcg/complex/all_types.h
|
|
vcg/complex/complex.h
|
|
vcg/complex/allocate.h
|
|
vcg/complex/exception.h
|
|
vcg/complex/algorithms/overlap_estimation.h
|
|
vcg/complex/algorithms/dual_meshing.h
|
|
vcg/complex/algorithms/intersection.h
|
|
vcg/complex/algorithms/clip.h
|
|
vcg/complex/algorithms/geodesic.h
|
|
vcg/complex/algorithms/parametrization/poisson_solver.h
|
|
vcg/complex/algorithms/parametrization/uv_utils.h
|
|
vcg/complex/algorithms/parametrization/distortion.h
|
|
vcg/complex/algorithms/parametrization/tangent_field_operators.h
|
|
vcg/complex/algorithms/parametrization/voronoi_atlas.h
|
|
vcg/complex/algorithms/edge_collapse.h
|
|
vcg/complex/algorithms/hole.h
|
|
vcg/complex/algorithms/align_pair.h
|
|
vcg/complex/algorithms/closest.h
|
|
vcg/complex/algorithms/tetra_implicit_smooth.h
|
|
vcg/complex/algorithms/bitquad_support.h
|
|
vcg/complex/algorithms/skeleton.h
|
|
vcg/complex/algorithms/symmetry.h
|
|
vcg/complex/algorithms/voronoi_volume_sampling.h
|
|
vcg/complex/algorithms/polygon_polychord_collapse.h
|
|
vcg/complex/algorithms/inside.h
|
|
vcg/complex/algorithms/local_optimization/tri_edge_flip.h
|
|
vcg/complex/algorithms/local_optimization/quad_diag_collapse.h
|
|
vcg/complex/algorithms/local_optimization/tri_edge_collapse_quadric.h
|
|
vcg/complex/algorithms/local_optimization/tri_edge_collapse_quadric_tex.h
|
|
vcg/complex/algorithms/local_optimization/tri_edge_collapse.h
|
|
vcg/complex/algorithms/local_optimization/tetra_edge_collapse.h
|
|
vcg/complex/algorithms/polygonal_algorithms.h
|
|
vcg/complex/algorithms/inertia.h
|
|
vcg/complex/algorithms/mesh_assert.h
|
|
vcg/complex/algorithms/cut_tree.h
|
|
vcg/complex/algorithms/nring.h
|
|
vcg/complex/algorithms/tetra/tetfuse_collapse.h
|
|
vcg/complex/algorithms/stat.h
|
|
vcg/complex/algorithms/ransac_matching.h
|
|
vcg/complex/algorithms/refine.h
|
|
vcg/complex/algorithms/outline_support.h
|
|
vcg/complex/algorithms/convex_hull.h
|
|
vcg/complex/algorithms/clean.h
|
|
vcg/complex/algorithms/mesh_to_matrix.h
|
|
vcg/complex/algorithms/quadrangulator.h
|
|
vcg/complex/algorithms/isotropic_remeshing.h
|
|
vcg/complex/algorithms/smooth.h
|
|
vcg/complex/algorithms/autoalign_4pcs.h
|
|
vcg/complex/algorithms/local_optimization.h
|
|
vcg/complex/algorithms/curve_on_manifold.h
|
|
vcg/complex/algorithms/clustering.h
|
|
vcg/complex/algorithms/refine_loop.h
|
|
vcg/complex/algorithms/cylinder_clipping.h
|
|
vcg/complex/algorithms/pointcloud_normal.h
|
|
vcg/complex/algorithms/bitquad_creation.h
|
|
vcg/complex/algorithms/crease_cut.h
|
|
vcg/complex/algorithms/implicit_smooth.h
|
|
vcg/complex/algorithms/voronoi_remesher.h
|
|
vcg/complex/algorithms/polygon_support.h
|
|
vcg/complex/algorithms/point_sampling.h
|
|
vcg/complex/algorithms/create/mc_lookup_table.h
|
|
vcg/complex/algorithms/create/mc_trivial_walker.h
|
|
vcg/complex/algorithms/create/extrude.h
|
|
vcg/complex/algorithms/create/resampler.h
|
|
vcg/complex/algorithms/create/ball_pivoting.h
|
|
vcg/complex/algorithms/create/readme.txt
|
|
vcg/complex/algorithms/create/zonohedron.h
|
|
vcg/complex/algorithms/create/platonic.h
|
|
vcg/complex/algorithms/create/marching_cubes.h
|
|
vcg/complex/algorithms/create/plymc/voxel.h
|
|
vcg/complex/algorithms/create/plymc/simplemeshprovider.h
|
|
vcg/complex/algorithms/create/plymc/tri_edge_collapse_mc.h
|
|
vcg/complex/algorithms/create/plymc/volume.h
|
|
vcg/complex/algorithms/create/plymc/plymc.h
|
|
vcg/complex/algorithms/create/plymc/svoxel.h
|
|
vcg/complex/algorithms/create/tetramesh_support.h
|
|
vcg/complex/algorithms/create/advancing_front.h
|
|
vcg/complex/algorithms/textcoord_optimization.h
|
|
vcg/complex/algorithms/bitquad_optimization.h
|
|
vcg/complex/algorithms/halfedge_quad_clean.h
|
|
vcg/complex/algorithms/voronoi_processing.h
|
|
vcg/complex/algorithms/update/quality.h
|
|
vcg/complex/algorithms/update/selection.h
|
|
vcg/complex/algorithms/update/fitmaps.h
|
|
vcg/complex/algorithms/update/component_ep.h
|
|
vcg/complex/algorithms/update/texture.h
|
|
vcg/complex/algorithms/update/curvature_fitting.h
|
|
vcg/complex/algorithms/update/normal.h
|
|
vcg/complex/algorithms/update/position.h
|
|
vcg/complex/algorithms/update/halfedge_topology.h
|
|
vcg/complex/algorithms/update/topology.h
|
|
vcg/complex/algorithms/update/flag.h
|
|
vcg/complex/algorithms/update/bounding.h
|
|
vcg/complex/algorithms/update/halfedge_indexed.h
|
|
vcg/complex/algorithms/update/color.h
|
|
vcg/complex/algorithms/update/curvature.h
|
|
vcg/complex/algorithms/point_outlier.h
|
|
vcg/complex/algorithms/harmonic.h
|
|
vcg/complex/algorithms/point_matching_scale.h
|
|
vcg/complex/algorithms/attribute_seam.h
|
|
vcg/complex/foreach.h
|
|
vcg/complex/base.h
|
|
vcg/complex/used_types.h
|
|
vcg/container/entries_allocation_table.h
|
|
vcg/container/container_allocation_table.h
|
|
vcg/container/derivation_chain.h
|
|
vcg/container/vector_occ.h
|
|
vcg/container/simple_temporary_data.h
|
|
vcg/space/segment2.h
|
|
vcg/space/fitting3.h
|
|
vcg/space/tetra3.h
|
|
vcg/space/triangle2.h
|
|
vcg/space/ray2.h
|
|
vcg/space/deprecated_point2.h
|
|
vcg/space/point4.h
|
|
vcg/space/box2.h
|
|
vcg/space/ray3.h
|
|
vcg/space/planar_polygon_tessellation.h
|
|
vcg/space/texcoord2.h
|
|
vcg/space/deprecated_point3.h
|
|
vcg/space/intersection/triangle_triangle3.h
|
|
vcg/space/distance2.h
|
|
vcg/space/point3.h
|
|
vcg/space/deprecated_point.h
|
|
vcg/space/space.h
|
|
vcg/space/point.h
|
|
vcg/space/colorspace.h
|
|
vcg/space/rect_packer.h
|
|
vcg/space/triangle3.h
|
|
vcg/space/obox3.h
|
|
vcg/space/point2.h
|
|
vcg/space/smallest_enclosing.h
|
|
vcg/space/color4.h
|
|
vcg/space/polygon3.h
|
|
vcg/space/line3.h
|
|
vcg/space/index/octree.h
|
|
vcg/space/index/grid_util2d.h
|
|
vcg/space/index/grid_closest.h
|
|
vcg/space/index/grid_static_ptr.h
|
|
vcg/space/index/grid_util.h
|
|
vcg/space/index/spatial_hashing.h
|
|
vcg/space/index/closest2d.h
|
|
vcg/space/index/grid_static_obj.h
|
|
vcg/space/index/kdtree/kdtree.h
|
|
vcg/space/index/kdtree/priorityqueue.h
|
|
vcg/space/index/kdtree/kdtree_face.h
|
|
vcg/space/index/kdtree/mlsutils.h
|
|
vcg/space/index/octree_template.h
|
|
vcg/space/index/aabb_binary_tree/kclosest.h
|
|
vcg/space/index/aabb_binary_tree/closest.h
|
|
vcg/space/index/aabb_binary_tree/ray.h
|
|
vcg/space/index/aabb_binary_tree/frustum_cull.h
|
|
vcg/space/index/aabb_binary_tree/aabb_binary_tree.h
|
|
vcg/space/index/aabb_binary_tree/base.h
|
|
vcg/space/index/grid_closest2d.h
|
|
vcg/space/index/spatial_hashing2d.h
|
|
vcg/space/index/space_iterators.h
|
|
vcg/space/index/grid_static_ptr2d.h
|
|
vcg/space/index/base2d.h
|
|
vcg/space/index/base.h
|
|
vcg/space/index/perfect_spatial_hashing.h
|
|
vcg/space/index/space_iterators2d.h
|
|
vcg/space/line2.h
|
|
vcg/space/point_matching.h
|
|
vcg/space/intersection3.h
|
|
vcg/space/deprecated_point4.h
|
|
vcg/space/rasterized_outline2_packer.h
|
|
vcg/space/box.h
|
|
vcg/space/plane3.h
|
|
vcg/space/outline2_packer.h
|
|
vcg/space/segment3.h
|
|
vcg/space/intersection2.h
|
|
vcg/space/sphere3.h
|
|
vcg/space/box3.h
|
|
vcg/space/distance3.h
|
|
vcg/math/quadric5.h
|
|
vcg/math/factorial.h
|
|
vcg/math/eigen_matrix_addons.h
|
|
vcg/math/quadric.h
|
|
vcg/math/perlin_noise.h
|
|
vcg/math/shot.h
|
|
vcg/math/spherical_harmonics.h
|
|
vcg/math/eigen_matrixbase_addons.h
|
|
vcg/math/quaternion.h
|
|
vcg/math/similarity.h
|
|
vcg/math/disjoint_set.h
|
|
vcg/math/random_generator.h
|
|
vcg/math/camera.h
|
|
vcg/math/linear.h
|
|
vcg/math/matrix44.h
|
|
vcg/math/eigen.h
|
|
vcg/math/old_lin_algebra.h
|
|
vcg/math/similarity2.h
|
|
vcg/math/gen_normal.h
|
|
vcg/math/old_matrix44.h
|
|
vcg/math/old_deprecated_matrix.h
|
|
vcg/math/old_matrix33.h
|
|
vcg/math/polar_decomposition.h
|
|
vcg/math/base.h
|
|
vcg/math/histogram.h
|
|
vcg/math/legendre.h
|
|
vcg/math/matrix33.h
|
|
vcg/math/old_matrix.h
|
|
vcg/simplex/edge/distance.h
|
|
vcg/simplex/edge/topology.h
|
|
vcg/simplex/edge/pos.h
|
|
vcg/simplex/edge/component.h
|
|
vcg/simplex/edge/base.h
|
|
vcg/simplex/tetrahedron/tetrahedron.h
|
|
vcg/simplex/tetrahedron/topology.h
|
|
vcg/simplex/tetrahedron/pos.h
|
|
vcg/simplex/tetrahedron/component.h
|
|
vcg/simplex/tetrahedron/base.h
|
|
vcg/simplex/face/component_occ.h
|
|
vcg/simplex/face/component_ep.h
|
|
vcg/simplex/face/jumping_pos.h
|
|
vcg/simplex/face/distance.h
|
|
vcg/simplex/face/component_polygon.h
|
|
vcg/simplex/face/topology.h
|
|
vcg/simplex/face/pos.h
|
|
vcg/simplex/face/component.h
|
|
vcg/simplex/face/component_ocf.h
|
|
vcg/simplex/face/base.h
|
|
vcg/simplex/vertex/component_occ.h
|
|
vcg/simplex/vertex/component_sph.h
|
|
vcg/simplex/vertex/distance.h
|
|
vcg/simplex/vertex/component.h
|
|
vcg/simplex/vertex/component_ocf.h
|
|
vcg/simplex/vertex/base.h
|
|
vcg/connectors/halfedge_pos.h
|
|
vcg/connectors/hedge.h
|
|
vcg/connectors/hedge_component.h
|
|
|
|
#wrap
|
|
wrap/callback.h
|
|
)
|
|
|
|
set(SOURCES
|
|
)
|
|
|
|
if (VCG_HEADER_ONLY)
|
|
add_library(vcglib INTERFACE)
|
|
target_include_directories(
|
|
vcglib INTERFACE
|
|
${CMAKE_CURRENT_LIST_DIR}
|
|
${EIGEN_INCLUDE_DIRS})
|
|
|
|
#just to show headers in ide
|
|
add_custom_target(vcglib_ide SOURCES ${VCG_HEADERS})
|
|
else()
|
|
#TODO make vcglib that includes all the wrap sources, checking everytime
|
|
# if the the required targets (e.g. qt, gl, glew...) exists
|
|
endif()
|
|
|
|
if(VCG_BUILD_EXAMPLES)
|
|
#TODO make the list of samples to build
|
|
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/apps)
|
|
endif()
|