Files
create/src/Mod/Mesh/App/CMakeLists.txt
Markus Reitböck 749ac36615 do not use precompiled header for setting global compiler definitions and to disable compiler warnings
only 4 of these warnings are still relevant, CMake shall be used to disable them

Compiler definitions:

  NOMINMAX:
    * is already globally defined in SetGlobalCompilerAndLinkerSettings.cmake

  WIN32_LEAN_AND_MEAN:
    * use CMake target_compile_options on relevant targets

Warnings that still occur:

  C4251, C4273, C4275: all related to dllimport / export
    * use CMake target_compile_options on relevant targets

  C4661: no suitable definition provied for explicit template instantiation request
    * triggered in Mesh because of Vector3D in Base - not all functions are defined in header
    * use CMake target_compile_options on relevant targets

Warnings that are Currently not triggered (fix code if they appear again):

  C4005: macro redefinition

  C4244: argument conversion, possible loss of data

  C4267: conversion from size_t to type, possible loss of data

  C4305: truncation from type1 to type2
    * only occurrence disabled in Reader.cpp

  C4522: multiple assignment operator specified

  C5208: unnamed class in typedef name

Obsolete Compiler warnings:

  C4181: not mentioned in Microsoft docs anymore

  C4290: C++ exception specification ignored except to indicate a function is not __declspec(nothrow)
    * throw(optional_type_list)  deprecated in C++17

  C4482: nonstandard extension used: enum 'enumeration' used in qualified name
    * not generated for compilers that support C++11

  C4503: 'identifier': decorated name length exceeded, name was truncated
    * obsolete since Visual Studio 2017

  C4786: not mentioned in Microsoft docs anymore
2025-09-11 20:21:04 -05:00

432 lines
12 KiB
CMake

add_library(Mesh SHARED)
if(WIN32)
add_definitions(-DFCAppMesh -DWM4_FOUNDATION_DLL_EXPORT)
endif(WIN32)
target_include_directories(
Mesh
PRIVATE
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}
)
target_include_directories(
Mesh
SYSTEM
PUBLIC
${CMAKE_SOURCE_DIR}/src/3rdParty/libkdtree
${EIGEN3_INCLUDE_DIR}
${QtConcurrent_INCLUDE_DIRS}
)
set(Mesh_LIBS
FreeCADBase
FreeCADApp
)
list(APPEND Mesh_LIBS
${QtConcurrent_LIBRARIES}
)
generate_from_py(Edge)
generate_from_py(Facet)
generate_from_py(MeshFeature)
generate_from_py(MeshPoint)
generate_from_py(Mesh)
SET(Mesh_XML_SRCS
Edge.pyi
Facet.pyi
MeshFeature.pyi
MeshPoint.pyi
Mesh.pyi
)
SOURCE_GROUP("XML" FILES ${Mesh_XML_SRCS})
SET(Core_SRCS
Core/Algorithm.cpp
Core/Algorithm.h
Core/Approximation.cpp
Core/Approximation.h
Core/Builder.cpp
Core/Builder.h
Core/Curvature.cpp
Core/Curvature.h
Core/Decimation.cpp
Core/Decimation.h
Core/Definitions.cpp
Core/Definitions.h
Core/Degeneration.cpp
Core/Degeneration.h
Core/Elements.cpp
Core/Elements.h
Core/Evaluation.cpp
Core/Evaluation.h
Core/Grid.cpp
Core/Grid.h
Core/Helpers.h
Core/Info.cpp
Core/Info.h
Core/Iterator.h
Core/KDTree.cpp
Core/KDTree.h
Core/MeshIO.cpp
Core/MeshIO.h
Core/MeshKernel.cpp
Core/MeshKernel.h
Core/Projection.cpp
Core/Projection.h
Core/Segmentation.cpp
Core/Segmentation.h
Core/SetOperations.cpp
Core/SetOperations.h
Core/Smoothing.cpp
Core/Smoothing.h
Core/Tools.cpp
Core/Tools.h
Core/TopoAlgorithm.cpp
Core/TopoAlgorithm.h
Core/Triangulation.cpp
Core/Triangulation.h
Core/Trim.cpp
Core/Trim.h
Core/TrimByPlane.cpp
Core/TrimByPlane.h
Core/tritritest.h
Core/Utilities.h
Core/Visitor.cpp
Core/Visitor.h
Core/CylinderFit.cpp
Core/CylinderFit.h
Core/SphereFit.cpp
Core/SphereFit.h
Core/IO/Reader3MF.cpp
Core/IO/Reader3MF.h
Core/IO/ReaderOBJ.cpp
Core/IO/ReaderOBJ.h
Core/IO/ReaderPLY.cpp
Core/IO/ReaderPLY.h
Core/IO/Writer3MF.cpp
Core/IO/Writer3MF.h
Core/IO/WriterInventor.cpp
Core/IO/WriterInventor.h
Core/IO/WriterOBJ.cpp
Core/IO/WriterOBJ.h
)
SOURCE_GROUP("Core" FILES ${Core_SRCS})
SET(WildMagic4_SRCS
WildMagic4/Wm4ApprCylinderFit3.cpp
WildMagic4/Wm4ApprCylinderFit3.h
WildMagic4/Wm4ApprGaussPointsFit2.cpp
WildMagic4/Wm4ApprGaussPointsFit2.h
WildMagic4/Wm4ApprGaussPointsFit3.cpp
WildMagic4/Wm4ApprGaussPointsFit3.h
WildMagic4/Wm4ApprLineFit3.cpp
WildMagic4/Wm4ApprLineFit3.h
WildMagic4/Wm4ApprPlaneFit3.cpp
WildMagic4/Wm4ApprPlaneFit3.h
WildMagic4/Wm4ApprPolyFit3.cpp
WildMagic4/Wm4ApprPolyFit3.h
WildMagic4/Wm4ApprQuadraticFit3.cpp
WildMagic4/Wm4ApprQuadraticFit3.h
WildMagic4/Wm4ApprSphereFit3.cpp
WildMagic4/Wm4ApprSphereFit3.h
WildMagic4/Wm4BandedMatrix.h
WildMagic4/Wm4BandedMatrix.inl
WildMagic4/Wm4Box2.h
WildMagic4/Wm4Box2.inl
WildMagic4/Wm4Box3.h
WildMagic4/Wm4Box3.inl
WildMagic4/Wm4ContBox2.cpp
WildMagic4/Wm4ContBox2.h
WildMagic4/Wm4ContBox3.cpp
WildMagic4/Wm4ContBox3.h
WildMagic4/Wm4ConvexHull.cpp
WildMagic4/Wm4ConvexHull.h
WildMagic4/Wm4ConvexHull1.cpp
WildMagic4/Wm4ConvexHull1.h
WildMagic4/Wm4ConvexHull2.cpp
WildMagic4/Wm4ConvexHull2.h
WildMagic4/Wm4ConvexHull3.cpp
WildMagic4/Wm4ConvexHull3.h
WildMagic4/Wm4DelPolygonEdge.cpp
WildMagic4/Wm4DelPolygonEdge.h
WildMagic4/Wm4DelPolyhedronFace.cpp
WildMagic4/Wm4DelPolyhedronFace.h
WildMagic4/Wm4DelTetrahedron.cpp
WildMagic4/Wm4DelTetrahedron.h
WildMagic4/Wm4DelTriangle.cpp
WildMagic4/Wm4DelTriangle.h
WildMagic4/Wm4Delaunay.cpp
WildMagic4/Wm4Delaunay.h
WildMagic4/Wm4Delaunay1.cpp
WildMagic4/Wm4Delaunay1.h
WildMagic4/Wm4Delaunay2.cpp
WildMagic4/Wm4Delaunay2.h
WildMagic4/Wm4Delaunay3.cpp
WildMagic4/Wm4Delaunay3.h
WildMagic4/Wm4DistLine3Segment3.cpp
WildMagic4/Wm4DistLine3Segment3.h
WildMagic4/Wm4DistLine3Triangle3.cpp
WildMagic4/Wm4DistLine3Triangle3.h
WildMagic4/Wm4DistSegment3Segment3.cpp
WildMagic4/Wm4DistSegment3Segment3.h
WildMagic4/Wm4DistSegment3Triangle3.cpp
WildMagic4/Wm4DistSegment3Triangle3.h
WildMagic4/Wm4DistVector3Plane3.cpp
WildMagic4/Wm4DistVector3Plane3.h
WildMagic4/Wm4DistVector3Segment3.cpp
WildMagic4/Wm4DistVector3Segment3.h
WildMagic4/Wm4DistVector3Triangle3.cpp
WildMagic4/Wm4DistVector3Triangle3.h
WildMagic4/Wm4Distance.cpp
WildMagic4/Wm4Distance.h
WildMagic4/Wm4ETManifoldMesh.cpp
WildMagic4/Wm4ETManifoldMesh.h
WildMagic4/Wm4ETManifoldMesh.inl
WildMagic4/Wm4EdgeKey.h
WildMagic4/Wm4EdgeKey.inl
WildMagic4/Wm4Eigen.cpp
WildMagic4/Wm4Eigen.h
WildMagic4/Wm4Foundation.h
WildMagic4/Wm4FoundationLIB.h
WildMagic4/Wm4FoundationPCH.cpp
WildMagic4/Wm4FoundationPCH.h
WildMagic4/Wm4GMatrix.h
WildMagic4/Wm4GMatrix.inl
WildMagic4/Wm4GVector.h
WildMagic4/Wm4GVector.inl
WildMagic4/Wm4ImplicitSurface.cpp
WildMagic4/Wm4ImplicitSurface.h
WildMagic4/Wm4Intersector.cpp
WildMagic4/Wm4Intersector.h
WildMagic4/Wm4Intersector1.cpp
WildMagic4/Wm4Intersector1.h
WildMagic4/Wm4IntrLine3Box3.cpp
WildMagic4/Wm4IntrLine3Box3.h
WildMagic4/Wm4IntrLine3Plane3.cpp
WildMagic4/Wm4IntrLine3Plane3.h
WildMagic4/Wm4IntrSegment3Box3.cpp
WildMagic4/Wm4IntrSegment3Box3.h
WildMagic4/Wm4IntrSegment3Plane3.cpp
WildMagic4/Wm4IntrSegment3Plane3.h
WildMagic4/Wm4IntrTriangle2Triangle2.cpp
WildMagic4/Wm4IntrTriangle2Triangle2.h
WildMagic4/Wm4IntrTriangle3Triangle3.cpp
WildMagic4/Wm4IntrTriangle3Triangle3.h
WildMagic4/Wm4LinComp.h
WildMagic4/Wm4LinComp.inl
WildMagic4/Wm4Line3.h
WildMagic4/Wm4Line3.inl
WildMagic4/Wm4LinearSystem.cpp
WildMagic4/Wm4LinearSystem.h
WildMagic4/Wm4Mapper2.h
WildMagic4/Wm4Mapper2.inl
WildMagic4/Wm4Mapper3.h
WildMagic4/Wm4Mapper3.inl
WildMagic4/Wm4Math.cpp
WildMagic4/Wm4Math.h
WildMagic4/Wm4Math.inl
WildMagic4/Wm4MathMCR.h
WildMagic4/Wm4Matrix2.cpp
WildMagic4/Wm4Matrix2.h
WildMagic4/Wm4Matrix2.inl
WildMagic4/Wm4Matrix3.cpp
WildMagic4/Wm4Matrix3.h
WildMagic4/Wm4Matrix3.inl
WildMagic4/Wm4Matrix4.cpp
WildMagic4/Wm4Matrix4.h
WildMagic4/Wm4Matrix4.inl
WildMagic4/Wm4Memory.cpp
WildMagic4/Wm4Memory.h
WildMagic4/Wm4Memory.inl
WildMagic4/Wm4MeshCurvature.cpp
WildMagic4/Wm4MeshCurvature.h
WildMagic4/Wm4MeshSmoother.cpp
WildMagic4/Wm4MeshSmoother.h
WildMagic4/Wm4ParametricSurface.cpp
WildMagic4/Wm4ParametricSurface.h
WildMagic4/Wm4Plane3.h
WildMagic4/Wm4Plane3.inl
WildMagic4/Wm4Platforms.h
WildMagic4/Wm4PolynomialRoots.cpp
WildMagic4/Wm4PolynomialRoots.h
WildMagic4/Wm4Polynomial1.h
WildMagic4/Wm4Polynomial1.inl
WildMagic4/Wm4QuadricSurface.cpp
WildMagic4/Wm4QuadricSurface.h
WildMagic4/Wm4Quaternion.cpp
WildMagic4/Wm4Quaternion.h
WildMagic4/Wm4Quaternion.inl
WildMagic4/Wm4Query.h
WildMagic4/Wm4Query.inl
WildMagic4/Wm4Query2.h
WildMagic4/Wm4Query2.inl
WildMagic4/Wm4Query2Filtered.h
WildMagic4/Wm4Query2Filtered.inl
WildMagic4/Wm4Query2Int64.h
WildMagic4/Wm4Query2Int64.inl
WildMagic4/Wm4Query2TInteger.h
WildMagic4/Wm4Query2TInteger.inl
WildMagic4/Wm4Query2TRational.h
WildMagic4/Wm4Query2TRational.inl
WildMagic4/Wm4Query3.h
WildMagic4/Wm4Query3.inl
WildMagic4/Wm4Query3Filtered.h
WildMagic4/Wm4Query3Filtered.inl
WildMagic4/Wm4Query3Int64.h
WildMagic4/Wm4Query3Int64.inl
WildMagic4/Wm4Query3TInteger.h
WildMagic4/Wm4Query3TInteger.inl
WildMagic4/Wm4Query3TRational.h
WildMagic4/Wm4Query3TRational.inl
WildMagic4/Wm4RVector2.h
WildMagic4/Wm4RVector2.inl
WildMagic4/Wm4RVector3.h
WildMagic4/Wm4RVector3.inl
WildMagic4/Wm4Segment3.h
WildMagic4/Wm4Segment3.inl
WildMagic4/Wm4Sphere3.h
WildMagic4/Wm4Sphere3.inl
WildMagic4/Wm4Surface.cpp
WildMagic4/Wm4Surface.h
WildMagic4/Wm4System.cpp
WildMagic4/Wm4System.h
WildMagic4/Wm4System.inl
WildMagic4/Wm4THashSet.h
WildMagic4/Wm4THashSet.inl
WildMagic4/Wm4THashTable.h
WildMagic4/Wm4THashTable.inl
WildMagic4/Wm4TInteger.h
WildMagic4/Wm4TInteger.inl
WildMagic4/Wm4TMinHeap.h
WildMagic4/Wm4TMinHeap.inl
WildMagic4/Wm4TRVector.h
WildMagic4/Wm4TRVector.inl
WildMagic4/Wm4TRational.h
WildMagic4/Wm4TRational.inl
WildMagic4/Wm4TSmallUnorderedSet.h
WildMagic4/Wm4TSmallUnorderedSet.inl
WildMagic4/Wm4TStringHashTable.h
WildMagic4/Wm4TStringHashTable.inl
WildMagic4/Wm4TTuple.h
WildMagic4/Wm4TTuple.inl
WildMagic4/Wm4Triangle2.h
WildMagic4/Wm4Triangle2.inl
WildMagic4/Wm4Triangle3.h
WildMagic4/Wm4Triangle3.inl
WildMagic4/Wm4TriangleKey.h
WildMagic4/Wm4TriangleKey.inl
WildMagic4/Wm4TriangulateEC.cpp
WildMagic4/Wm4TriangulateEC.h
WildMagic4/Wm4UniqueVerticesTriangles.h
WildMagic4/Wm4UniqueVerticesTriangles.inl
WildMagic4/Wm4VEManifoldMesh.cpp
WildMagic4/Wm4VEManifoldMesh.h
WildMagic4/Wm4VEManifoldMesh.inl
WildMagic4/Wm4Vector2.cpp
WildMagic4/Wm4Vector2.h
WildMagic4/Wm4Vector2.inl
WildMagic4/Wm4Vector3.cpp
WildMagic4/Wm4Vector3.h
WildMagic4/Wm4Vector3.inl
WildMagic4/Wm4Vector4.cpp
WildMagic4/Wm4Vector4.h
WildMagic4/Wm4Vector4.inl
)
SOURCE_GROUP("WildMagic4" FILES ${WildMagic4_SRCS})
SET(Mesh_SRCS
${Mesh_XML_SRCS}
AppMesh.cpp
AppMeshPy.cpp
Exporter.cpp
Exporter.h
Importer.cpp
Importer.h
Edge.cpp
Edge.h
EdgePyImp.cpp
Facet.cpp
Facet.h
FacetPyImp.cpp
FeatureMeshCurvature.cpp
FeatureMeshCurvature.h
FeatureMeshDefects.cpp
FeatureMeshDefects.h
FeatureMeshExport.cpp
FeatureMeshExport.h
FeatureMeshImport.cpp
FeatureMeshImport.h
FeatureMeshSegmentByMesh.cpp
FeatureMeshSegmentByMesh.h
FeatureMeshSetOperations.cpp
FeatureMeshSetOperations.h
FeatureMeshSolid.cpp
FeatureMeshSolid.h
FeatureMeshTransform.cpp
FeatureMeshTransform.h
FeatureMeshTransformDemolding.cpp
FeatureMeshTransformDemolding.h
Mesh.cpp
Mesh.h
MeshFeature.cpp
MeshFeature.h
MeshFeaturePyImp.cpp
MeshPointPyImp.cpp
MeshPoint.h
MeshProperties.cpp
MeshProperties.h
MeshPyImp.cpp
MeshTexture.cpp
MeshTexture.h
PreCompiled.cpp
PreCompiled.h
Segment.cpp
Segment.h
)
# Suppress -Wundefined-var-template
if (MINGW AND CMAKE_COMPILER_IS_CLANGXX)
unset(_flag_found CACHE)
check_cxx_compiler_flag("-Wno-undefined-var-template" _flag_found)
if (_flag_found)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-undefined-var-template")
endif()
endif()
if(FREECAD_USE_PCH)
add_definitions(-D_PreComp_)
GET_MSVC_PRECOMPILED_SOURCE("PreCompiled.cpp" PCH_SRCS ${Core_SRCS} ${Mesh_SRCS})
ADD_MSVC_PRECOMPILED_HEADER(Mesh PreCompiled.h PreCompiled.cpp PCH_SRCS)
endif(FREECAD_USE_PCH)
# Suppress some very long Eigen3 warnings of older versions
if (EIGEN3_NO_DEPRECATED_COPY)
set_source_files_properties(
Core/Approximation.cpp
Core/CylinderFit.cpp
Core/SphereFit.cpp
Core/KDTree.cpp
PROPERTIES COMPILE_FLAGS ${EIGEN3_NO_DEPRECATED_COPY})
endif ()
target_sources(Mesh PRIVATE ${Core_SRCS} ${WildMagic4_SRCS} ${Mesh_SRCS})
target_link_libraries(Mesh ${Mesh_LIBS})
if (MSVC)
target_compile_options(Mesh PRIVATE /wd4251 /wd4275 /wd4661)
endif()
if (FREECAD_WARN_ERROR)
target_compile_warn_error(Mesh)
endif()
SET_BIN_DIR(Mesh Mesh /Mod/Mesh)
SET_PYTHON_PREFIX_SUFFIX(Mesh)
INSTALL(TARGETS Mesh DESTINATION ${CMAKE_INSTALL_LIBDIR})