You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下QtCreator+CMake构建OpenCASCADE项目及vcpkg配置问题

Windows下QtCreator+CMake构建依赖OpenCASCADE及freetype/tcl/tk的项目问题

我需要在Windows系统上,通过QtCreator结合CMake构建一个依赖OpenCASCADE的项目,同时要编译它依赖的freetype、tcl、tk库,Qt工具链已配置正常。

我的文件夹结构如下:

mylibrary/main.cpp
occt-7_8_0/
freetype-2.10.4/
tcl8.5.0/
tk8.5.0/

不使用VTK,main.cpp示例代码:

#include <TopoDS.hxx>
#include <BRepPrimAPI_MakeBox.hxx>
void makeBox(){
    gp_Pnt gp1(0,0,0);
    gp_Pnt gp2(1,1,1);

    TopoDS_Solid box = BRepPrimAPI_MakeBox(gp1, gp2).Solid();
}

mylibrary目录下的CMakeLists.txt内容:

message("=== Occt wrapper as a lib ===")

add_library(mylibrary_lib SHARED)

if (CMAKE_COMPILER_IS_GNUCXX)
    add_compile_options(-Wa,-mbig-obj)
endif()
if (MSVC)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj")
endif()

# find_package(<module>) uses <module>Config.cmake-file in <module>_DIR path
find_package(OpenCASCADE REQUIRED)
target_include_directories(mylibrary_lib PRIVATE "${OpenCASCADE_INCLUDE_DIR}") # OCC is needed

if(NOT OpenCASCADE_FOUND)
    message(FATAL_ERROR "Cannot build the executable without OpenCASCADE. Please set the variable OpenCASCADE_DIR.")
else()
    message("    found OpenCASCADE " ${OpenCASCADE_VERSION})

    # include
    target_include_directories(mylibrary_lib PUBLIC ${OpenCASCADE_INCLUDE_DIR})
    message("    found OpenCASCADE_INCLUDE_DIR: ${OpenCASCADE_INCLUDE_DIR}" )
    # link
    target_link_libraries(mylibrary_lib PUBLIC ${OpenCASCADE_LIBRARIES}) # This should be private!
    message("    found OpenCASCADE_LIBRARIES: ${OpenCASCADE_LIBRARIES}" )
endif()
target_sources(mylibrary_lib PUBLIC "./main.cpp")

更新尝试:使用vcpkg
我尝试用vcpkg来管理依赖,操作步骤如下:

  • 安装vcpkg并完成初始设置,记录vcpkg文件夹路径
  • 在vcpkg目录打开CMD,执行安装命令:
    vcpkg --install opencascade
    
  • 配置QtCreator:
    • 安装并激活Vcpkg插件
    • 进入「编辑/首选项/CMake」:
      • 在Vcpkg标签页选择vcpkg目录路径
      • 在常规标签页勾选「包管理器自动设置」
    • 重启QtCreator
    • 在库的src目录创建vcpkg.json:
      {
          "dependencies": [
              "opencascade", "freetype", "tcl", "tk"
          ]
      }
      
  • 在CMakeLists.txt中添加:find_package(OpenCASCADE CONFIG REQUIRED)

清理项目并执行Run CMake后,出现如下错误:

CMake Error at src/lib_occ_scene/CMakeLists.txt:47 (find_package):
  Could not find a package configuration file provided by "opencascade" with
  any of the following names:

    opencascadeConfig.cmake
    opencascade-config.cmake

  Add the installation prefix of "opencascade" to CMAKE_PREFIX_PATH or set
  "opencascade_DIR" to a directory containing one of the above files.  If
  "opencascade" provides a separate development package or SDK, be sure it
  has been installed.

CMakeCache.txt中包含以下内容:

//Value Computed by CMake.
CMAKE_FIND_PACKAGE_REDIRECTS_DIR:STATIC=C:/path/to/build/build-projectname-Desktop_Qt_5_15_2_MSVC2015_64bit-Debug/CMakeFiles/pkgRedirects

但该文件夹是空的。

内容的提问来源于stack exchange,提问作者KungPhoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:13:19