zoukankan      html  css  js  c++  java
  • cmake编译Qt5

    官方文档在这里

    cmake_minimum_required(VERSION 3.15)
    project(XXX)
    
    set(CMAKE_CXX_STANDARD 14)
    
    find_package(Qt5 COMPONENTS Core Qml Quick Charts Widgets DBus REQUIRED)
    set(CMAKE_AUTOMOC ON)
    set(CMAKE_AUTORCC ON)
    set(CMAKE_AUTOUIC ON)
    
    # add_executable(XXX a.cpp a.h b.cpp ...)
    
    target_link_libraries(XXX PRIVATE Qt5::Core Qt5::Qml Qt5::Quick Qt5::Charts Qt5::Widgets Qt5::DBus)

    以上的脚本依赖一个环境变量,应把Qt5_DIR设置为Qt5Config.cmake所在的目录,如果使用QtCreator打开CMakeLists.txt文件时,默认会传入一个QT_QMAKE_EXECUTABLE的变量,使用这个变量,我们就可以不用设置Qt5_DIR了,但需要添加如下代码

    if (DEFINED QT_QMAKE_EXECUTABLE)
        get_filename_component(_QT_USR_DIR ${QT_QMAKE_EXECUTABLE} DIRECTORY)
        get_filename_component(_QT_USR_DIR ${_QT_USR_DIR} DIRECTORY)
        set(Qt5_DIR ${_QT_USR_DIR}/lib/cmake/Qt5)
        set(_QT_USR_DIR)
    endif()

    如果项目使用了Qml,很可能会需要链接OpenGL库,但不知道为什么Qt5的cmake不会自动依赖这个库,需要添加如下代码

    find_package(OpenGL COMPONENTS OpenGL REQUIRED)
    
    target_link_libraries(XXX PRIVATE OpenGL::GL) # 需要安装 libgl1-mesa-dev库

     如果使用QtCreator,应把所有文件都加入到Target的Source中,否则QtCreator的工程中就看不到了,对于qml这种与编译无关的文件,可以使用如下方法,添加

    file(GLOB_RECURSE QML_FILES "qml/*.qml")
    target_sources(XXX PRIVATE ${QML_FILES})
  • 相关阅读:
    5
    4
    3
    crontab -e 报错(E518: Unknown option: foldenable)
    解决无法修改日志时间的问题(Local time zone must be set--see zic manual page 2019 )
    ping测试丢包率
    关闭SELinux
    iotop使用方法
    mysql的备份
    修改uid gid 的起始范围
  • 原文地址:https://www.cnblogs.com/windtail/p/12426440.html
Copyright © 2011-2022 走看看