在上一篇文章中,我们实现了OpenCASCADE文件及相关工具集的cmake方式构建,以及OCCT源码库的生成。紧接着,我们需要让Qt的Cmake项目去实现OCCT源码库的链接,让OpenCASCADE的源文件能够被项目所引用。
根据源码库的链接实现方式,其源码库分别需要静态库include和动态库lib。
OCCT源码库中,它的静态库则是其include目录中的“XXX.hxx”文件,动态库则是lib目录下的“XXX.dylib”文件。也就是说,我们的cmake项目必须要真正链接到“XXX.hxx”文件和“XXX.dylib”文件。
一.使用cmake的find_package指令来搜索OCCT的开源库,获取其动态库和静态库的链接路径。
首先,我们打开自己的Qt Creator代码编辑器,导入或创建自己的cmake项目-newcad,并点击项目中的CMakeLists.txt文件,进行链接源码库OCCT的正确配置。
关于CMakeLists.txt文件的具体配置内容,如下:
# CMakeLists.txt
# 功能:链接OCCT源码目录中的静态库include和动态库lib
# 1.使用config模式, 需要指定config所在路径
set(CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH};${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/OCCT/lib/cmake/opencascade")
# third_lib_dir 的赋值需要先于find_package执行
set(third_lib_dir ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/OCCT/lib)
# 2. 搜索OCCT源文件的静态库和动态库
find_package(OpenCASCADE)
# 3.打印并输出OCCT静态库和动态库的文件路径信息
message(STATUS " OpenCASCADE_FOUND: ${OpenCASCADE_FOUND}")
message(STATUS " OpenCASCADE_DIR: ${OpenCASCADE_DIR}")
message(STATUS " OpenCASCADE_INCLUDE_DIR: ${OpenCASCADE_INCLUDE_DIR}")
message(STATUS " OpenCASCADE_LIBRAIES: ${OpenCASCADE_LIBRARIES}")
message(STATUS " third_lib_dir: ${third_lib_dir}")
# 4.指定OCCT的路径
include_directories("/library/cad/newcad/3rdparty/OCCT/include/opencascade")
# 5.导入并链接OCCT源码库
target_link_libraries(newcad PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
target_link_libraries(newcad PUBLIC ${OpenCASCADE_LIBRARIES})
其次,我们要在newcad项目中创建OpenCASCADEConfig.cmake和FindOpenCASCADE.cmake这两个文件,对搜索的变量OpenCASCADE去指定源码库变量名的路径,比如OpenCASCADE_DIR和OpenCASCADE_INCLUDE_DIR。
OpenCASCADEConfig.cmake和FindOpenCASCADE.cmake,这两个文件设置的信息内容是完全相同的,可以通过vim命令进行操作,具体配置信息如下:
# 在系统终端,使用vim对其OpenCASCADEConfig.cmake进行编辑
macbook:newcad zhou$ vim OpenCASCADEConfig.cmake
OpenCASCADEConfig.cmake和FindOpenCASCADE.cmake文件,其设置内容如下:
二.验证自己的项目是否能够正常链接OCCT库,并对其源码库进行测试。
上述配置内容完成之后,我们要打开Qt Creator代码编辑器的右侧菜单CMake Modules选项,会发现OCCT的../lib/cmake目录中的所有cmake文件都已加入到newcad项目中,这也间接说明已经成功链接OCCT的源码库。
如果你不太确定,可以随便在OCCT中的include目录中查找一个静态库的文件名称,并把文件名称导入到mainwindow.h中进行测试。
测试完成之后,如果没有任何erorr信息,则表示OCCT的源码库可以进行正常使用。
结语:
关于Qt的Cmake项目链接opencascade的源码库OCCT,其配置过程并不是非常难,但需要注意的是:我们一定要非常熟悉cmake访问源码库路径的正确查找方式,只有准确定位其源文件路径,源码库的链接才能正常被激活。
如果您在上述的配置过程中,还遇到其它的一些问题,可在评论区进行留言。