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

如何在Qt Creator CMake QML项目中正确添加OpenXLSX库?

在Qt Creator CMake项目中正确集成第三方库(以OpenXLSX为例)

一、正确集成带CMake配置的第三方库(如OpenXLSX)

你的第二次尝试是符合现代CMake最佳实践的正确方式,官方文档提到的“将OpenXLSX文件夹作为子目录添加到项目源码树”,本质就是使用add_subdirectory指令实现。

具体步骤:

  1. 将OpenXLSX完整源码文件夹放到你的项目根目录(与项目主CMakeLists.txt同级)
  2. 在项目主CMakeLists.txt中,确保在add_executable之后、链接指令之前添加:
    add_subdirectory(OpenXLSX)
    
  3. 在target_link_libraries中链接库目标:
    target_link_libraries(appTest
        PRIVATE Qt6::Quick OpenXLSX::OpenXLSX
    )
    

这种方式无需修改库的源码,CMake会自动处理头文件路径、编译规则,是最推荐的做法。你第一次直接拷贝源文件并修改#include路径的方法,不仅维护成本高(库更新后需重复修改),还破坏了库本身的CMake配置,完全不建议使用。

二、解决编译警告问题

你遇到的-Wsign conversion等警告,是因为OpenXLSX的代码未适配你的编译器默认警告等级,可通过两种方式解决:

  1. 针对库单独调整警告等级:在add_subdirectory前临时降低警告等级,避免影响自身项目代码:
    # 保存当前警告设置
    set(OLD_CXX_FLAGS ${CMAKE_CXX_FLAGS})
    # 关闭特定警告
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-sign-conversion -Wno-shorten-64-to-32 -Wno-defaulted-function-deleted")
    add_subdirectory(OpenXLSX)
    # 恢复原有警告设置
    set(CMAKE_CXX_FLAGS ${OLD_CXX_FLAGS})
    
  2. 修改OpenXLSX的CMakeLists.txt:若你是本地维护或fork了该库,可在它的CMakeLists中添加关闭警告的指令:
    target_compile_options(OpenXLSX PRIVATE -Wno-sign-conversion -Wno-shorten-64-to-32)
    

这种方式更干净,不会影响自身项目的警告规则。

三、关于Qt Creator的“添加库”选项

Qt Creator的“添加库”功能确实存在,但仅对.qmake(.pro文件)项目默认显示,CMake项目需手动触发:

  1. 在项目面板右键点击CMake项目根节点
  2. 选择添加... -> 库...
  3. 按照向导选择“外部库”或“内部库”,CMake项目下该功能会自动生成find_package或add_subdirectory相关代码(若库支持)

不过对于自带CMakeLists.txt的库(如OpenXLSX),手动编写add_subdirectory反而更直接可控。

四、通用第三方库集成流程(CMake项目)

根据库的类型,对应不同的最佳实践:

  • 带CMakeLists.txt的源码库:直接用add_subdirectory链接库目标,简单可靠。
  • 预编译库(.a/.so/.lib/.dll):优先使用find_package(若库提供Config.cmake),或手动用add_library导入后设置头文件路径与链接路径。
  • 仅头文件的库:通过target_include_directories将库的头文件目录添加到项目目标即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 17:25:05