QT开发CmakeLists文件详解
时间:2023-08-14 01:31:27来源:哔哩哔哩

# **指定当前所需cmake最低版本为

cmake_minimum_required(VERSION )

#  **项目名称ProjectName 版本号 使用的语言C++


(资料图片)

project(ProjectName VERSION 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版本来引用具体的模块。连续的两个find_package,确保后续构建过程中使用到的模型与先前找到的Qt版本匹配。

find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)

# **定义项目的源文件列表 包含项目源文件目录

set(PROJECT_SOURCES

)

# 包含源文件目录 优化项目 大佬添加

INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR})

# **创建可执行文件

#  如果Qt的主要版本号大于等于6,则使用"qt_add_executable"来创建可执行文件。否则,根据目标平台选择创建动态库(Android)或可执行文件。

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

#  **链接可执行文件并设置属性

# 将Qt模块链接到目标可执行文件或动态库。

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

if(${QT_VERSION} VERSION_LESS )

set(BUNDLE_ID_OPTION MACOSX_BUNDLE_GUI_IDENTIFIER )

endif()

# 设置目标可执行文件的属性,如MacOSX的Bundle标识符、版本号和短版本字符串,以及在Windows下作为可执行文件运行。这个部分负责将Qt模块链接到目标可执行文件或动态库

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

)

#  **安装目标可执行文件到指定的目录

include(GNUInstallDirs)

install(TARGETS ProjectName

BUNDLE DESTINATION .

LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}

RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}

)

#  *QT6环境下可执行文件最后处理

#qt_finalize_executable是一个CMake宏,用于在构建Qt应用程序时进行最后的可执行文件处理。qt_finalize_executable宏仅在使用Qt 6时才需要调用。

if(QT_VERSION_MAJOR EQUAL 6)

qt_finalize_executable(ProjectName)

endif()

本文为自己精简撰写,素材采集如下。

素材支持:

解析QT6自动生成的CMake文件 - 知乎 ()

CMake应用:完全指南 - 知乎 ()

CMake应用:核心语法篇 - 知乎 ()

CMake应用:基础篇 - 知乎 ()

在此感谢以上文章撰写者!

如有不妥,请联系本人处理!

标签:

生活指南
  • “莫言B站账号被封”?B站回应:谣言!“莫言作家”为冒名注册账号

    东方网8月13日消息:8月13日,B站发布公告称“莫言B站账号被封”是谣言

  • 江西省九江市2023-08-13 18:01发布暴雨黄色预警

    一、江西省九江市天气预报1、永修县气象台2023年08月13日17时57分发布

  • 洛阳钼业(03993.HK):8月3日南向资金增持1255.8万股

    8月3日北向资金增持1255 8万股洛阳钼业(03993 HK)。近5个交易日中,

  • 呼和浩特市总工会在劳动者服务站点慰问环卫工人

    中工网讯8月2日,内蒙古呼和浩特市三产服务业工会、呼和浩特市总工会保

  • 国家金融监督管理总局党委书记、局长李云泽会见华为技术有限公司轮值董事长兼CFO孟晚舟

    国家金融监督管理总局党委书记、局长李云泽会见华为技术有限公司轮值董

  • 全省首批!咸安区首个深度融合型教联体学校揭牌成立

    8月3日,咸宁市实验小学、咸宁市第三实验小学教联体学校成立,并举行揭

  • 中国女足回国时间出炉!FIFA发放奖金:每人22万,足协也有1120万

    据悉,中国女足小组出局之后,也将提前告别本届世界杯,将于8月3日回国

  • 《茶啊二中》,动画电影中方言运用的有益尝试

    近十年国产动画电影迅速发展,不断学习升级动画技术经验,在审美体验上

  • 2023富士康郑州科技园离职返岗招聘信息

    2023富士康郑州科技园离职返岗最新招聘信息首次返岗:奖金高达:7000元

  • 浓香美味的蛋花汤

    做蛋花汤,别急着倒蛋液,水开往锅里多倒1样,香浓鲜美蛋花漂亮夏天的

  • 麦格理:予中海油(00883)“中性”评级 目标价升至11港元

    麦格理发布研究报告称,予中国海洋石油(00883)“中性”评级,目标价上

  • C视频·大运村的“young”气生活| 属于四川的竹编“小红兔”

    大熊猫爱吃的竹子也能做出工艺品和生活用品。

  • 视频头脉冲试验_视频头

    1、视频头上有个可以转动的地方,转一下,把焦距调一下,另外,保持室内光

  • 教育企业跨界节能环保领域谋转型 博通股份拟收购新三板公司驭腾能环55%股份

    7月31日晚间,博通股份发布公告称,公司拟向驭腾集团、陈力群、博睿永

  • 大运村举办“大音希声”古琴音乐晚会

    大运村举办“大音希声”古琴音乐晚会- "演员在演奏《凤求凰》。 "

  • 隆基Hi-MO 7组件重磅亮相沙特,高能品质助力"沙特2030愿景"加速实现​

    7月27日,SolarQuarterBusinessMeet2023在沙特利雅得举行,隆基绿能携全

  • 民生
    • 归国者讲述真实电诈生活:比《孤注一掷》更残酷

    • 云南巧家县(关于云南巧家县的基本详情介绍)

    • 《EA Sports FC 24》试玩视频发布 封测玩家被禁止分享

    • 2023乐购东莞望牛墩消费券发放详情(时间/满减金额)