3

I would like to use OpenCascade for my Windows C++ project. I'm using CMake for configuring my project.
I just installed OpenCascade windows installer(VC++ 2017 64 bit: opencascade-7.6.0-vc14-64.exe) in my PC and import it in my CMakeLists.txt file. (full installation was chosen)

# CMakeLists.txt
find_package(OpenCASCADE REQUIRED)
message("=== find package(OpenCASCADE) generated OpenCASCADE_DIR=${OpenCASCADE_DIR}, OpenCASCADE_CONFIG=${OpenCASCADE_CONFIG}")
message("=== find package(OpenCASCADE) loaded OpenCASCADE_INCLUDE_DIR=${OpenCASCADE_INCLUDE_DIR}")
message("=== find package(OpenCASCADE) loaded OpenCASCADE_LIBRARY_DIR=${OpenCASCADE_LIBRARY_DIR}")
message("=== find package(OpenCASCADE) loaded OpenCASCADE_BINARY_DIR=${OpenCASCADE_BINARY_DIR}")
message("=== find package(OpenCASCADE) loaded OpenCASCADE_LIBRARY=${OpenCASCADE_LIBRARIES}")

#...
#...
#...

target_link_libraries(MYAPP
  PRIVATE ${OpenCASCADE_LIBRARIES}
)

Output

=== find package(OpenCASCADE) generated OpenCASCADE_DIR=C:/OpenCASCADE-7.6.0-vc14-64/opencascade-7.6.0/cmake, OpenCASCADE_CONFIG=C:/OpenCASCADE-7.6.0-vc14-64/opencascade-7.6.0/cmake/OpenCASCADEConfig.cmake
=== find package(OpenCASCADE) loaded OpenCASCADE_INCLUDE_DIR=C:/OpenCASCADE-7.6.0-vc14-64/opencascade-7.6.0/inc
=== find package(OpenCASCADE) loaded OpenCASCADE_LIBRARY_DIR=C:/OpenCASCADE-7.6.0-vc14-64/opencascade-7.6.0/win64/vc14/lib
=== find package(OpenCASCADE) loaded OpenCASCADE_BINARY_DIR=C:/OpenCASCADE-7.6.0-vc14-64/opencascade-7.6.0/win64/vc14/bin
=== find package(OpenCASCADE) loaded OpenCASCADE_LIBRARY=TKernel;TKMath;TKG2d;TKG3d;TKGeomBase;TKBRep;TKGeomAlgo;TKTopAlgo;TKPrim;TKBO;TKShHealing;TKBool;TKHLR;TKFillet;TKOffset;TKFeat;TKMesh;TKXMesh;TKService;TKV3d;TKOpenGl;TKOpenGles;TKMeshVS;TKIVtk;TKD3DHost;TKCDF;TKLCAF;TKCAF;TKBinL;TKXmlL;TKBin;TKXml;TKStdL;TKStd;TKTObj;TKBinTObj;TKXmlTObj;TKVCAF;TKXSBase;TKSTEPBase;TKSTEPAttr;TKSTEP209;TKSTEP;TKIGES;TKXCAF;TKXDEIGES;TKXDESTEP;TKSTL;TKVRML;TKXmlXCAF;TKBinXCAF;TKRWMesh;TKDraw;TKTopTest;TKOpenGlTest;TKViewerTest;TKOpenGlesTest;TKD3DHostTest;TKXSDRAW;TKDCAF;TKXDEDRAW;TKTObjDRAW;TKQADraw;TKIVtkDraw

and I generated my project. However, I can't installed it because of 3rd-party error. Below is the error output.

ninja: error: 'C:/occt-3rdparty/Windows-64-VC14/angle-gles2-2.1.0-46ad513f4e5b-vc14-64/lib/libEGL.lib', needed by 'MYAPP.exe', missing and no known rule to make it

What is "occt-3rdparty" directory? I know there are some 3rd-party libraries in C:/OpenCASCADE-7.6.0-vc14-64, but should I move all these libraries to C:/occt-3rdparty/Windows-64-VC14? Even it's true, there is no angle-gles2-2.1.0-46ad513f4e5b-vc14-64 in my OpenCascade folder. Below list is libraries when I installed OpenCascade with full installation.

C:\OpenCASCADE-7.6.0-vc14-64\ffmpeg-3.3.4-64
C:\OpenCASCADE-7.6.0-vc14-64\freeimage-3.17.0-vc14-64
C:\OpenCASCADE-7.6.0-vc14-64\freetype-2.5.5-vc14-64
C:\OpenCASCADE-7.6.0-vc14-64\openvr-1.14.15-64
C:\OpenCASCADE-7.6.0-vc14-64\qt5.11.2-vc14-64
C:\OpenCASCADE-7.6.0-vc14-64\rapidjson-1.1.0
C:\OpenCASCADE-7.6.0-vc14-64\tbb_2017.0.100
C:\OpenCASCADE-7.6.0-vc14-64\tcltk-86-64
C:\OpenCASCADE-7.6.0-vc14-64\vtk-6.1.0-vc14-64

=============================

Few minutes later, I realized that the "Draw" module of opencascade requires "angle-gles2". So I modified target_link_libraries CMakeLists.txt for importing module not using "angle-gles2".

# CMakeLists.txt

# ...
# ...
# ...

target_link_libraries(MYAPP
  PRIVATE ${OpenCASCADE_FoundationClasses_LIBRARIES}
)

Output

ninja: error: 'C:/occt-3rdparty/Windows-64-VC14/tbb44_20160526oss/lib/intel64/vc14/tbb.lib', needed by 'MYAPP.exe', missing and no known rule to make it

As see, it requires the "tbb" library into C:/occt-3rdparty/Windows-64-VC14. Even I got "tbb_2017.0.100", not "tbb44_20160526oss"! I could'n find any information about this problem in OpenCascade documents.
Ok, so I moved all 3rd-party library folders from opencascade installed folder to C:/occt-3rdparty/Windows-64-VC14. Some libraries' name had to be changed when I facing missing link error. Finally, I stucked the linker error that "LNK1181: Can't open 'vtkCommonCore.lib'".
My vtk path is

C:\occt-3rdparty\Windows-64-VC14\VTK-6.1.0-vc14-64\lib

but the library file I got is 'vtkCommonCore-6.1.lib', not 'vtkCommonCore.lib'!!!
I confuse. I installed official pre-compiled opencascade for windows, and it offered its 3rd-party libraries, but why the opencascade requires other versions of 3rd-party libraries when I link to my project? I don't know what I missed. How can I use opencascade for my C++ project with cmake? I hope someone let me know. Thanks

WOOSEOK CHOI
  • 165
  • 9
  • 1
    I'm running into the same issue on 7.6.0. It seems all their -Config.cmake files (which appear to be themselves auto-generated at some point) are broken and hard code these C:/occt-3rdparty paths. Trying to find a workaround. – MHebes Jan 27 '23 at 22:15

0 Answers0