2
# Once done this will define
4
# OCC_FOUND - system has OCC - OpenCASCADE
5
# OCC_INCLUDE_DIR - where the OCC include directory can be found
6
# OCC_LIBRARY_DIR - where the OCC library directory can be found
7
# OCC_LIBRARIES - Link this to use OCC
8
# OCC_OCAF_LIBRARIES - Link this to use OCC OCAF framework
10
# First try to find OpenCASCADE Community Edition
11
if(NOT DEFINED OCE_DIR)
12
# Check for OSX needs to come first because UNIX evaluates to true on OSX
13
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
14
if(DEFINED MACPORTS_PREFIX)
15
find_package(OCE QUIET HINTS ${MACPORTS_PREFIX}/Library/Frameworks)
16
elseif(DEFINED HOMEBREW_PREFIX)
17
find_package(OCE QUIET HINTS ${HOMEBREW_PREFIX}/Cellar/oce/*)
20
set(OCE_DIR "/usr/local/share/cmake/")
22
set(OCE_DIR "c:/OCE-0.4.0/share/cmake")
26
if(${FREECAD_USE_OCC_VARIANT} MATCHES "Community Edition")
27
find_package(OCE QUIET)
31
message(STATUS "-- OpenCASCADE Community Edition has been found.")
32
# Disable this define. For more details see bug #0001872
33
#add_definitions (-DHAVE_CONFIG_H)
34
set(OCC_INCLUDE_DIR ${OCE_INCLUDE_DIRS})
35
#set(OCC_LIBRARY_DIR ${OCE_LIBRARY_DIR})
36
else(OCE_FOUND) #look for OpenCASCADE
37
# we first try to find opencascade directly:
38
if(NOT OCCT_CMAKE_FALLBACK)
39
find_package(OpenCASCADE CONFIG QUIET)
40
if(NOT (CMAKE_VERSION VERSION_LESS 3.6.0))
41
get_property(flags DIRECTORY PROPERTY COMPILE_DEFINITIONS)
42
# OCCT 7.5 adds this define that causes hundreds of compiler warnings with Qt5.x, so remove it again
43
list(FILTER flags EXCLUDE REGEX [[GL_GLEXT_LEGACY]])
44
set_property(DIRECTORY PROPERTY COMPILE_DEFINITIONS ${flags})
46
endif(NOT OCCT_CMAKE_FALLBACK)
48
set(OCC_FOUND ${OpenCASCADE_FOUND})
49
set(OCC_INCLUDE_DIR ${OpenCASCADE_INCLUDE_DIR})
50
set(OCC_LIBRARY_DIR ${OpenCASCADE_LIBRARY_DIR})
51
set(OCC_LIBRARIES ${OpenCASCADE_LIBRARIES})
52
set(OCC_OCAF_LIBRARIES TKCAF TKXCAF)
53
else(OpenCASCADE_FOUND)
56
FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
57
/usr/include/opencascade
58
/usr/local/include/opencascade
59
/opt/opencascade/include
62
FIND_LIBRARY(OCC_LIBRARY TKernel
68
FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
69
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\SIM\\OCC\\2;Installation Path]/include"
71
FIND_LIBRARY(OCC_LIBRARY TKernel
72
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\SIM\\OCC\\2;Installation Path]/lib"
74
endif(CYGWIN OR MINGW)
76
FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
78
/usr/include/opencascade
79
/usr/local/include/opencascade
80
/opt/opencascade/include
83
FIND_LIBRARY(OCC_LIBRARY TKernel
90
GET_FILENAME_COMPONENT(OCC_LIBRARY_DIR ${OCC_LIBRARY} PATH)
91
IF(NOT OCC_INCLUDE_DIR)
92
FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
93
${OCC_LIBRARY_DIR}/../inc
97
endif(OpenCASCADE_FOUND)
101
file(STRINGS ${OCC_INCLUDE_DIR}/Standard_Version.hxx OCC_MAJOR
102
REGEX "#define OCC_VERSION_MAJOR.*"
104
string(REGEX MATCH "[0-9]+" OCC_MAJOR ${OCC_MAJOR})
105
file(STRINGS ${OCC_INCLUDE_DIR}/Standard_Version.hxx OCC_MINOR
106
REGEX "#define OCC_VERSION_MINOR.*"
108
string(REGEX MATCH "[0-9]+" OCC_MINOR ${OCC_MINOR})
109
file(STRINGS ${OCC_INCLUDE_DIR}/Standard_Version.hxx OCC_MAINT
110
REGEX "#define OCC_VERSION_MAINTENANCE.*"
112
string(REGEX MATCH "[0-9]+" OCC_MAINT ${OCC_MAINT})
114
set(OCC_VERSION_STRING "${OCC_MAJOR}.${OCC_MINOR}.${OCC_MAINT}")
115
endif(OCC_INCLUDE_DIR)
117
# handle the QUIETLY and REQUIRED arguments and set OCC_FOUND to TRUE if
118
# all listed variables are TRUE
119
include(FindPackageHandleStandardArgs)
120
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OCC REQUIRED_VARS OCC_INCLUDE_DIR VERSION_VAR OCC_VERSION_STRING)
143
set(OCC_OCAF_LIBRARIES
156
if(NOT OCC_VERSION_STRING VERSION_LESS 7.5.0)
157
list(APPEND OCC_OCAF_LIBRARIES TKRWMesh)
158
endif(NOT OCC_VERSION_STRING VERSION_LESS 7.5.0)
159
if(OCC_VERSION_STRING VERSION_LESS 7.8.0)
160
list(APPEND OCC_LIBRARIES TKIGES TKSTL TKSTEPBase TKSTEPAttr TKSTEP209 TKSTEP)
161
list(APPEND OCC_OCAF_LIBRARIES TKXDESTEP TKXDEIGES)
162
else(OCC_VERSION_STRING VERSION_LESS 7.8.0)
163
list(APPEND OCC_LIBRARIES TKDESTEP TKDEIGES TKDEGLTF TKDESTL)
164
endif(OCC_VERSION_STRING VERSION_LESS 7.8.0)
165
message(STATUS "-- Found OCE/OpenCASCADE version: ${OCC_VERSION_STRING}")
166
message(STATUS "-- OCE/OpenCASCADE include directory: ${OCC_INCLUDE_DIR}")
167
message(STATUS "-- OCE/OpenCASCADE shared libraries directory: ${OCC_LIBRARY_DIR}")
169
#message(SEND_ERROR "Neither OpenCASCADE Community Edition nor OpenCasCade were found: will not build CAD modules!")