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

修改CMakeLists.txt使CLion识别本地Qt6以运行CGAL Qt6 Demo

解决CGAL Qt6 Demo编译问题(Hyperbolic_triangulation_2)

问题背景

  • 基于CLion + vcpkg开发,已通过C:\dev\vcpkg> .\vcpkg.exe install qt5安装Qt5,可正常运行部分CGAL Demo,但依赖Qt6的Demo(如Hyperbolic_triangulation_2)无法编译
  • vcpkg暂未提供Qt6包,已手动安装MSVC2019 64位版Qt6至C:\Qt\6.7.2\msvc2019_64
  • 需要配置CMake使其找到手动安装的Qt6,或修改Demo自带的CMakeLists.txt

解决方案

方法1:CLion配置CMake参数(推荐,无需修改代码)

  1. 打开CLion,进入项目设置:File > Settings > Build, Execution, Deployment > CMake
  2. 在CMake options输入框中添加Qt6路径配置:
    -DCMAKE_PREFIX_PATH=C:\Qt\6.7.2\msvc2019_64
    
  3. 确认CLion使用的工具链为MSVC2019 64位(Settings > Build, Execution, Deployment > Toolchains),与Qt6版本匹配
  4. 点击Apply后重新加载CMake项目,CMake即可识别到Qt6

方法2:修改Demo的CMakeLists.txt

直接在CMakeLists.txt开头添加Qt6的配置路径提示,修改后的完整代码如下:

cmake_minimum_required(VERSION 3.12...3.29)
project(Hyperbolic_triangulation_2_Demo)

# 指定Qt6的CMake配置文件路径,帮助CMake定位Qt6
set(Qt6_DIR "C:/Qt/6.7.2/msvc2019_64/lib/cmake/Qt6")

# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)

find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Core Qt6)
find_package(LEDA QUIET)

# 查找Qt6 Widgets组件,改为REQUIRED以便排查定位失败问题
find_package(Qt6 REQUIRED COMPONENTS Widgets)

if(CGAL_Qt6_FOUND
        AND Qt6_FOUND
        AND (CGAL_Core_FOUND OR LEDA_FOUND))

    set(CMAKE_AUTOMOC ON)
    set(CMAKE_AUTOUIC ON)
    set(CMAKE_AUTORCC ON)

    qt_add_executable ( HDT2 HDT2.cpp HDT2.ui resources/Delaunay_triangulation_2.qrc
            include/internal/Qt/HyperbolicPainterOstreamCK.h
            include/internal/Qt/TriangulationGraphicsItemWithColorInfo.h
            include/internal/Qt/TriangulationMovingPoint.h
            include/internal/Qt/TriangulationRemoveVertex.h)
    target_include_directories(HDT2 PRIVATE ./ ./include)
    add_to_cached_list( CGAL_EXECUTABLE_TARGETS HDT2 )
    target_link_libraries ( HDT2 PRIVATE CGAL::CGAL CGAL::CGAL_Qt6 Qt6::Widgets)
    if(CGAL_Core_FOUND)
        target_link_libraries ( HDT2 PRIVATE CGAL::CGAL_Core)
    else()
        target_link_libraries ( HDT2 PRIVATE ${LEDA_LIBRARIES})
    endif()

    include(${CGAL_MODULES_DIR}/CGAL_add_test.cmake)
    cgal_add_compilation_test( HDT2 )
else()
    message("NOTICE: This demo requires CGAL_Core (or LEDA), and Qt6 and will not be compiled.")
endif()

修改说明

  • 新增set(Qt6_DIR ...):直接指定Qt6的CMake配置文件所在路径,这是CMake定位Qt6的核心步骤
  • 将find_package(Qt6 QUIET ...)改为REQUIRED:若Qt6定位失败会直接抛出错误,便于快速排查问题,而非静默跳过

注意事项

  • 确保vcpkg使用的编译器与Qt6版本一致(均为MSVC2019 64位),避免编译链接错误
  • CGAL 5.6.1已支持Qt6,无需额外升级CGAL
  • 无需让vcpkg识别手动安装的Qt6,直接通过CMake配置定位即可,vcpkg继续管理CGAL等其他依赖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 23:43:21