如何为Windows C+&#x2B安装和导入OpenCascade项目?
我想将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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论