• 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})
  • 相关阅读:
    git相关
    String,static,final
    tomcat和servlet的基本了解
    xml的相关知识
    js基础
    HTML
    Java之JDBC连接池
    Java之JDBC
    Java的内存模型
    Java的内存结构
  • 原文地址:https://www.cnblogs.com/windtail/p/12426440.html
Copyright © 2020-2023  润新知