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