如何为Windows C+&#x2B安装和导入OpenCascade项目?

发布于 2025-02-03 17:39:44 字数 4246 浏览 4 评论 0原文

我想将OpenCascade用于Windows C ++项目。我正在使用CMAKE配置我的项目。
我刚刚安装了 opencascade windows installer (vc ++ 2017 64 bit:opencascade-7.6.6.6.0-vc14-64。 exe)在我的PC中,然后在我的cmakelists.txt文件中导入它。 (选择了完整的安装)

# 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}
)

输出

=== 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

,我生成了项目。但是,由于第三方错误,我无法安装它。以下是错误输出。

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

什么是“ OCCT-3RDPARTY”目录?我知道c:/opencascade-7.6.0-vc14-64中有一些第三方库,但是我应该将所有这些库移动到c:/occt-3rdparty/windows- 64-VC14?即使如此,我的OpenCascade文件夹中也没有Angle-Gles2-2.1.0-46ad513f4e5b-Vc14-64。下面的列表是我安装完整安装的OpenCascade时库。

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

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

几分钟后,我意识到OpenCascade的“绘制”模块需要“ Angle-Gles2”。因此,我修改了target_link_libraries cmakelists.txt用于导入不使用“ Angle-gles2”的模块。

# CMakeLists.txt

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

target_link_libraries(MYAPP
  PRIVATE ${OpenCASCADE_FoundationClasses_LIBRARIES}
)

输出

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

所见,它需要“ TBB”库中的c:/occt-3rdparty/windows-64-VC14。甚至我也得到了“ TBB_2017.0.100”,也没有“ TBB44_20160526OSS”! 我可以在OpenCascade文档中找到有关此问题的任何信息。
好的,所以我将所有第三方库文件夹从OpenCascade安装的文件夹移动到c:/occt-3rdparty/windows-64-vc14。当我遇到缺少链接错误时,必须更改某些库的名称。最后,我遇到了“ lnk1181:无法打开'vtkcommoncore.lib'”。
我的VTK路径是,

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

但是我得到的库文件是'vtkcommoncore-6.1.lib',而不是'vtkcommoncore.lib'!!!
我感到困惑。我为Windows安装了官方的预编译OpenCascade,并提供了其第三方库,但是当我链接到项目时,OpenCascade为什么OpenCascade需要其他版本的第三方库?我不知道我错过了什么。如何使用CMAKE将OpenCascade用于我的C ++项目?我希望有人让我知道。谢谢

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文