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})

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM