最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

QT開發(fā)CmakeLists文件詳解

2023-08-14 00:47 作者:祁連XU  | 我要投稿

# **指定當前所需cmake最低版本為3.5

cmake_minimum_required(VERSION 3.5)


#? **項目名稱ProjectName 版本號0.1 使用的語言C++

project(ProjectName VERSION 0.1 LANGUAGES CXX)


#? **設置自動編譯

#? 使自動編譯UIC(將ui文件轉換成c++可編譯或鏈接的文件) MOC(將qt元對象轉換為c++可編譯或鏈接的文件) RCC(將其他可資源文件轉換為c++可編譯或鏈接的文件) 可用

set(CMAKE_AUTOUIC ON)

set(CMAKE_AUTOMOC ON)

set(CMAKE_AUTORCC ON)


#? **設置編譯器

# 設置使用的c++編譯器版本

set(CMAKE_CXX_STANDARD 17)


# 設置支持當前c++編譯器

set(CMAKE_CXX_STANDARD_REQUIRED ON)


# **查找并加載外部依賴包

# 首先查找并加載qt6 找不到就找qt5加載 CMake將要求同時加載Widgets和PrintSupport模塊,REQUIRED關鍵字確保這些模塊是必需的,當找不到模塊時,會導致CMake錯誤并停止構建。構建過程中,CMake將使用到的QT版本對QT_VERSION_MAJOR變量進行賦值。

find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)


#根據第一個find_package函數中找到的QT版本來引用具體的模塊。連續(xù)的兩個find_package,確保后續(xù)構建過程中使用到的模型與先前找到的Qt版本匹配。

find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)


# **定義項目的源文件列表 包含項目源文件目錄

set(PROJECT_SOURCES

? ? ? ? main.cpp

? ? ? ? pj.cpp

? ? ? ? pj.h

? ? ? ? pj.ui

? ? ? ? qrc.qrc

)


# 包含源文件目錄 優(yōu)化項目 大佬添加

INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR})


# **創(chuàng)建可執(zhí)行文件

#? 如果Qt的主要版本號大于等于6,則使用"qt_add_executable"來創(chuàng)建可執(zhí)行文件。否則,根據目標平臺選擇創(chuàng)建動態(tài)庫(Android)或可執(zhí)行文件。

if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)

? ? qt_add_executable(ProjectName

? ? ? ? MANUAL_FINALIZATION

? ? ? ? ${PROJECT_SOURCES}

? ? )

else()

? ? if(ANDROID)

? ? ? ? add_library(ProjectName SHARED

? ? ? ? ? ? ${PROJECT_SOURCES}

? ? ? ? )

# Define properties for Android with Qt 5 after find_package() calls as:

#? ? set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")

? ? else()

? ? ? ? add_executable(ProjectName

? ? ? ? ? ? ${PROJECT_SOURCES}

? ? ? ? )

? ? endif()

endif()


#? **鏈接可執(zhí)行文件并設置屬性

# 將Qt模塊鏈接到目標可執(zhí)行文件或動態(tài)庫。

target_link_libraries(ProjectName PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)



if(${QT_VERSION} VERSION_LESS 6.1.0)

? set(BUNDLE_ID_OPTION MACOSX_BUNDLE_GUI_IDENTIFIER com.example.ProjectName)

endif()


# 設置目標可執(zhí)行文件的屬性,如MacOSX的Bundle標識符、版本號和短版本字符串,以及在Windows下作為可執(zhí)行文件運行。這個部分負責將Qt模塊鏈接到目標可執(zhí)行文件或動態(tài)庫

set_target_properties(ProjectName PROPERTIES

? ? ${BUNDLE_ID_OPTION}

? ? MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}

? ? MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}

? ? MACOSX_BUNDLE TRUE

? ? WIN32_EXECUTABLE TRUE

)


#? **安裝目標可執(zhí)行文件到指定的目錄

include(GNUInstallDirs)

install(TARGETS ProjectName

? ? BUNDLE DESTINATION .

? ? LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}

? ? RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}

)


#? *QT6環(huán)境下可執(zhí)行文件最后處理

#qt_finalize_executable是一個CMake宏,用于在構建Qt應用程序時進行最后的可執(zhí)行文件處理。qt_finalize_executable宏僅在使用Qt 6時才需要調用。

if(QT_VERSION_MAJOR EQUAL 6)

? ? qt_finalize_executable(ProjectName)

endif()


本文為自己精簡撰寫,素材采集如下。

素材支持:

解析QT6自動生成的CMake文件 - 知乎 (zhihu.com)

CMake應用:CMakeLists.txt完全指南 - 知乎 (zhihu.com)

CMake應用:核心語法篇 - 知乎 (zhihu.com)

CMake應用:基礎篇 - 知乎 (zhihu.com)

在此感謝以上文章撰寫者!


如有不妥,請聯系本人處理!


QT開發(fā)CmakeLists文件詳解的評論 (共 條)

分享到微博請遵守國家法律
兴隆县| 剑阁县| 张掖市| 陆良县| 阿克陶县| 望都县| 墨玉县| 景东| 辽源市| 新闻| 松阳县| 阿拉尔市| 吴桥县| 双桥区| 柳州市| 额济纳旗| 新田县| 乌兰浩特市| 成武县| 刚察县| 和田县| 上高县| 德令哈市| 澄迈县| 鹰潭市| 和平区| 横峰县| 海淀区| 阿合奇县| 黄陵县| 晋城| 兴山县| 南陵县| 彰武县| 临沧市| 西藏| 灵璧县| 天长市| 蒙城县| 南安市| 河南省|