137 lines
4.5 KiB
CMake
137 lines
4.5 KiB
CMake
# Try to find OCC
|
|
# Once done this will define
|
|
#
|
|
# OCC_FOUND - system has OCC - OpenCASCADE
|
|
# OCC_INCLUDE_DIR - where the OCC include directory can be found
|
|
# OCC_LIBRARY_DIR - where the OCC library directory can be found
|
|
# OCC_LIBRARIES - Link this to use OCC
|
|
# OCC_OCAF_LIBRARIES - Link this to use OCC OCAF framework
|
|
|
|
# we first try to find opencascade directly:
|
|
if (NOT OCCT_CMAKE_FALLBACK)
|
|
find_package(OpenCASCADE CONFIG QUIET)
|
|
get_property(flags DIRECTORY PROPERTY COMPILE_DEFINITIONS)
|
|
# OCCT 7.5 adds this define that causes hundreds of compiler warnings with Qt5.x, so remove it again
|
|
list(FILTER flags EXCLUDE REGEX [[GL_GLEXT_LEGACY]])
|
|
set_property(DIRECTORY PROPERTY COMPILE_DEFINITIONS ${flags})
|
|
endif ()
|
|
if (OpenCASCADE_FOUND)
|
|
set(OCC_FOUND ${OpenCASCADE_FOUND})
|
|
set(OCC_INCLUDE_DIR ${OpenCASCADE_INCLUDE_DIR})
|
|
set(OCC_LIBRARY_DIR ${OpenCASCADE_LIBRARY_DIR})
|
|
set(OCC_LIBRARIES ${OpenCASCADE_LIBRARIES})
|
|
set(OCC_OCAF_LIBRARIES TKCAF TKXCAF)
|
|
else ()
|
|
if (WIN32)
|
|
if (CYGWIN OR MINGW)
|
|
find_path(OCC_INCLUDE_DIR Standard_Version.hxx
|
|
/usr/include/opencascade
|
|
/usr/local/include/opencascade
|
|
/opt/opencascade/include
|
|
/opt/opencascade/inc
|
|
)
|
|
find_path(OCC_LIBRARY TKernel
|
|
/usr/lib
|
|
/usr/local/lib
|
|
/opt/opencascade/lib
|
|
)
|
|
else ()
|
|
find_path(OCC_INCLUDE_DIR Standard_Version.hxx
|
|
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\SIM\\OCC\\2;Installation Path]/include"
|
|
)
|
|
find_library(OCC_LIBRARY TKernel
|
|
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\SIM\\OCC\\2;Installation Path]/lib"
|
|
)
|
|
endif ()
|
|
else ()
|
|
find_path(OCC_INCLUDE_DIR Standard_Version.hxx
|
|
/usr/include/occt
|
|
/usr/include/opencascade
|
|
/usr/local/include/opencascade
|
|
/opt/opencascade/include
|
|
/opt/opencascade/inc
|
|
)
|
|
find_library(OCC_LIBRARY TKernel
|
|
/usr/lib
|
|
/usr/local/lib
|
|
/opt/opencascade/lib
|
|
)
|
|
endif ()
|
|
if (OCC_LIBRARY)
|
|
get_filename_component(OCC_LIBRARY_DIR ${OCC_LIBRARY} PATH)
|
|
if (NOT OCC_INCLUDE_DIR)
|
|
find_path(OCC_INCLUDE_DIR Standard_Version.hxx
|
|
${OCC_LIBRARY_DIR}/../inc
|
|
)
|
|
endif ()
|
|
endif ()
|
|
endif ()
|
|
|
|
if (OCC_INCLUDE_DIR)
|
|
file(STRINGS ${OCC_INCLUDE_DIR}/Standard_Version.hxx OCC_MAJOR
|
|
REGEX "#define OCC_VERSION_MAJOR.*"
|
|
)
|
|
string(REGEX MATCH "[0-9]+" OCC_MAJOR ${OCC_MAJOR})
|
|
file(STRINGS ${OCC_INCLUDE_DIR}/Standard_Version.hxx OCC_MINOR
|
|
REGEX "#define OCC_VERSION_MINOR.*"
|
|
)
|
|
string(REGEX MATCH "[0-9]+" OCC_MINOR ${OCC_MINOR})
|
|
file(STRINGS ${OCC_INCLUDE_DIR}/Standard_Version.hxx OCC_MAINT
|
|
REGEX "#define OCC_VERSION_MAINTENANCE.*"
|
|
)
|
|
string(REGEX MATCH "[0-9]+" OCC_MAINT ${OCC_MAINT})
|
|
|
|
set(OCC_VERSION_STRING "${OCC_MAJOR}.${OCC_MINOR}.${OCC_MAINT}")
|
|
endif ()
|
|
|
|
# handle the QUIETLY and REQUIRED arguments and set OCC_FOUND to TRUE if
|
|
# all listed variables are TRUE
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(OCC REQUIRED_VARS OCC_INCLUDE_DIR VERSION_VAR OCC_VERSION_STRING)
|
|
|
|
if (OCC_FOUND)
|
|
set(OCC_LIBRARIES
|
|
TKFillet
|
|
TKMesh
|
|
TKernel
|
|
TKG2d
|
|
TKG3d
|
|
TKMath
|
|
TKShHealing
|
|
TKXSBase
|
|
TKBool
|
|
TKBO
|
|
TKBRep
|
|
TKTopAlgo
|
|
TKGeomAlgo
|
|
TKGeomBase
|
|
TKOffset
|
|
TKPrim
|
|
TKHLR
|
|
TKFeat
|
|
)
|
|
set(OCC_OCAF_LIBRARIES
|
|
TKBin
|
|
TKBinL
|
|
TKCAF
|
|
TKXCAF
|
|
TKLCAF
|
|
TKVCAF
|
|
TKCDF
|
|
TKMeshVS
|
|
TKService
|
|
TKV3d
|
|
TKRWMesh
|
|
)
|
|
|
|
if (OCC_VERSION_STRING VERSION_LESS 7.8.0)
|
|
list(APPEND OCC_LIBRARIES TKIGES TKSTL TKSTEPBase TKSTEPAttr TKSTEP209 TKSTEP)
|
|
list(APPEND OCC_OCAF_LIBRARIES TKXDESTEP TKXDEIGES)
|
|
else ()
|
|
list(APPEND OCC_LIBRARIES TKDESTEP TKDEIGES TKDEGLTF TKDESTL)
|
|
endif ()
|
|
message(STATUS "-- Found OpenCASCADE version: ${OCC_VERSION_STRING}")
|
|
message(STATUS "-- OpenCASCADE include directory: ${OCC_INCLUDE_DIR}")
|
|
message(STATUS "-- OpenCASCADE shared libraries directory: ${OCC_LIBRARY_DIR}")
|
|
endif ()
|