FreeCAD

Форк
0
/
FindOCC.cmake 
170 строк · 5.5 Кб
1
# Try to find OCE / OCC
2
# Once done this will define
3
#
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
9

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/*)
18
    endif()
19
  elseif(UNIX)
20
    set(OCE_DIR "/usr/local/share/cmake/")
21
  elseif(WIN32)
22
    set(OCE_DIR "c:/OCE-0.4.0/share/cmake")
23
  endif()
24
endif()
25

26
if(${FREECAD_USE_OCC_VARIANT} MATCHES "Community Edition")
27
  find_package(OCE QUIET)
28
endif()
29

30
if(OCE_FOUND)
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})
45
    endif()
46
  endif(NOT OCCT_CMAKE_FALLBACK)
47
  if(OpenCASCADE_FOUND)
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)
54
    if(WIN32)
55
      if(CYGWIN OR MINGW)
56
      FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
57
          /usr/include/opencascade
58
          /usr/local/include/opencascade
59
          /opt/opencascade/include
60
          /opt/opencascade/inc
61
        )
62
        FIND_LIBRARY(OCC_LIBRARY TKernel
63
          /usr/lib
64
          /usr/local/lib
65
          /opt/opencascade/lib
66
        )
67
      else(CYGWIN OR MINGW)
68
      FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
69
          "[HKEY_LOCAL_MACHINE\\SOFTWARE\\SIM\\OCC\\2;Installation Path]/include"
70
        )
71
        FIND_LIBRARY(OCC_LIBRARY TKernel
72
          "[HKEY_LOCAL_MACHINE\\SOFTWARE\\SIM\\OCC\\2;Installation Path]/lib"
73
        )
74
      endif(CYGWIN OR MINGW)
75
    else(WIN32)
76
      FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
77
        /usr/include/occt
78
        /usr/include/opencascade
79
        /usr/local/include/opencascade
80
        /opt/opencascade/include
81
        /opt/opencascade/inc
82
      )
83
      FIND_LIBRARY(OCC_LIBRARY TKernel
84
        /usr/lib
85
        /usr/local/lib
86
        /opt/opencascade/lib
87
      )
88
    endif(WIN32)
89
    if(OCC_LIBRARY)
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
94
        )
95
      ENDIF()
96
    endif(OCC_LIBRARY)
97
  endif(OpenCASCADE_FOUND)
98
endif(OCE_FOUND)
99

100
if(OCC_INCLUDE_DIR)
101
  file(STRINGS ${OCC_INCLUDE_DIR}/Standard_Version.hxx OCC_MAJOR
102
    REGEX "#define OCC_VERSION_MAJOR.*"
103
  )
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.*"
107
  )
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.*"
111
  )
112
  string(REGEX MATCH "[0-9]+" OCC_MAINT ${OCC_MAINT})
113

114
  set(OCC_VERSION_STRING "${OCC_MAJOR}.${OCC_MINOR}.${OCC_MAINT}")
115
endif(OCC_INCLUDE_DIR)
116

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)
121

122
if(OCC_FOUND)
123
  set(OCC_LIBRARIES
124
    TKFillet
125
    TKMesh
126
    TKernel
127
    TKG2d
128
    TKG3d
129
    TKMath
130
    TKShHealing
131
    TKXSBase
132
    TKBool
133
    TKBO
134
    TKBRep
135
    TKTopAlgo
136
    TKGeomAlgo
137
    TKGeomBase
138
    TKOffset
139
    TKPrim
140
    TKHLR
141
    TKFeat
142
  )
143
  set(OCC_OCAF_LIBRARIES
144
    TKBin
145
    TKBinL
146
    TKCAF
147
    TKXCAF
148
    TKLCAF
149
    TKVCAF
150
    TKCDF
151
    TKMeshVS
152
    TKService
153
    TKV3d
154
  )
155

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}")
168
else(OCC_FOUND)
169
  #message(SEND_ERROR "Neither OpenCASCADE Community Edition nor OpenCasCade were found: will not build CAD modules!")
170
endif(OCC_FOUND)
171

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.