diff --git a/cMake/FindSMESH.cmake b/cMake/FindSMESH.cmake index 475e785cd6..e13d575e5c 100644 --- a/cMake/FindSMESH.cmake +++ b/cMake/FindSMESH.cmake @@ -5,28 +5,55 @@ # SMESH_INCLUDE_DIR - where the Salome SMESH include directory can be found # SMESH_LIBRARIES - Link this to use Salome SMESH # - +# SMESH needs VTK +find_package(VTK REQUIRED) + +# If this definition is not set, linker errors will occur against SMESH on 64 bit machines. +if(CMAKE_SIZEOF_VOID_P STREQUAL 8) + add_definitions(-DSALOME_USE_64BIT_IDS) +endif(CMAKE_SIZEOF_VOID_P STREQUAL 8) + IF (CMAKE_COMPILER_IS_GNUCC) FIND_PATH(SMESH_INCLUDE_DIR SMESH_Mesh.hxx # These are default search paths, why specify them? - # /usr/include - # /usr/local/include - PATH_SUFFIXES smesh - ) - FIND_LIBRARY(SMESH_LIBRARY SMESH - # /usr/lib - # /usr/local/lib + PATH_SUFFIXES smesh SMESH smesh/SMESH ) + FIND_LIBRARY(SMESH_LIBRARY SMESH) ELSE (CMAKE_COMPILER_IS_GNUCC) # Not yet implemented ENDIF (CMAKE_COMPILER_IS_GNUCC) +IF(SMESH_INCLUDE_DIR) + SET(SMESH_INC_ROOT "${SMESH_INCLUDE_DIR}/..") + # Append extra include dirs + SET(SMESH_INCLUDE_DIR + "${SMESH_INCLUDE_DIR}; + ${SMESH_INC_ROOT}/Controls; + ${SMESH_INC_ROOT}/Driver; + ${SMESH_INC_ROOT}/DriverDAT; + ${SMESH_INC_ROOT}/DriverGMF; + ${SMESH_INC_ROOT}/DriverSTL; + ${SMESH_INC_ROOT}/DriverUNV; + ${SMESH_INC_ROOT}/Geom; + ${SMESH_INC_ROOT}/Kernel; + ${SMESH_INC_ROOT}/MEFISTO2; + ${SMESH_INC_ROOT}/MeshVSLink; + ${SMESH_INC_ROOT}/Netgen; + ${SMESH_INC_ROOT}/NETGENPlugin; + ${SMESH_INC_ROOT}/SMDS; + ${SMESH_INC_ROOT}/SMESHDS; + ${SMESH_INC_ROOT}/SMESHUtils; + ${SMESH_INC_ROOT}/StdMeshers;") +ELSE(SMESH_INCLUDE_DIR) + message(FATAL_ERROR "SMESH include directories not found!") +ENDIF(SMESH_INCLUDE_DIR) + SET(SMESH_FOUND FALSE) IF(SMESH_LIBRARY) SET(SMESH_FOUND TRUE) GET_FILENAME_COMPONENT(SMESH_LIBRARY_DIR ${SMESH_LIBRARY} PATH) - set(SMESH_LIBRARIES + set(SMESH_LIBRARIES ${SMESH_LIBRARY_DIR}/libDriver.so ${SMESH_LIBRARY_DIR}/libDriverDAT.so ${SMESH_LIBRARY_DIR}/libDriverSTL.so @@ -36,5 +63,8 @@ IF(SMESH_LIBRARY) ${SMESH_LIBRARY_DIR}/libSMESHDS.so ${SMESH_LIBRARY_DIR}/libStdMeshers.so ) + set(EXTERNAL_SMESH_LIBS ${SMESH_LIBRARIES}) +ELSE(SMESH_LIBRARY) + message(FATAL_ERROR "SMESH libraries NOT FOUND!") ENDIF(SMESH_LIBRARY) diff --git a/cMake/FreeCAD_Helpers/SetupSalomeSMESH.cmake b/cMake/FreeCAD_Helpers/SetupSalomeSMESH.cmake index 5cf36329df..d3cb9271e6 100644 --- a/cMake/FreeCAD_Helpers/SetupSalomeSMESH.cmake +++ b/cMake/FreeCAD_Helpers/SetupSalomeSMESH.cmake @@ -1,6 +1,10 @@ macro(SetupSalomeSMESH) # -------------------------------- Salome SMESH -------------------------- + # Allow using external SMESH + if (FREECAD_USE_EXTERNAL_SMESH) + find_package(SMESH REQUIRED) + endif(FREECAD_USE_EXTERNAL_SMESH) # Salome SMESH sources are under src/3rdParty now if(BUILD_SMESH) # set the internal smesh version: