cmake构建在Visual stdio 2019 和Xcode的Qt的程序

概述:用CMake可以方便地构建Qt的应用程序,前提是你已经配置好用Visual Stdio 开发的Qt的环境或者Xcode的Qt开发环境。

1、编写CMakeLists.txt

cmake_minimum_required(VERSION 3.6)set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "My multi config types" FORCE)set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set_property(GLOBAL PROPERTY AUTOGEN_TARGETS_FOLDER AutoMoc)set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)project(CcQtApp)if(WIN32)add_definitions("/wd4819")
elseif(APPLE) SET(CMAKE_OSX_DEPLOYMENT_TARGET "10.12")
endif(WIN32)macro(ADD_FRAMEWORK fwname appname)
find_library(FRAMEWORK_${fwname}NAMES ${fwname}PATHS ${CMAKE_OSX_SYSROOT}/System/LibraryPATH_SUFFIXES FrameworksNO_DEFAULT_PATH)
if( ${FRAMEWORK_${fwname}} STREQUAL FRAMEWORK_${fwname}-NOTFOUND)MESSAGE(ERROR ": Framework ${fwname} not found")
else()TARGET_LINK_LIBRARIES(${appname} ${FRAMEWORK_${fwname}})MESSAGE(STATUS "Framework ${fwname} found at ${FRAMEWORK_${fwname}}")
endif()
endmacro(ADD_FRAMEWORK)if(WIN32)set(QtVersion 5.14)
elseif(APPLE)set(QtVersion 5.7)
elseif(LINUX)set(QtVersion 5.14)
endif()if(WIN32)set(exe_property WIN32)set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD /Zi /MP /Gm- /Qpar /wd4996")set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd")set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF /LARGEADDRESSAWARE")add_definitions(-DUNICODE -D_UNICODE -D_SCL_SECURE_NO_WARNINGS -DWIN32 -DV_LOG -DCURL_STATICLIB)elseif(APPLE)SET(BUILD_WITH_INSTALL_RPATH TRUE)set(exe_property MACOSX_BUNDLE)set (CMAKE_CXX_FLAGS "--std=gnu++11 ${CMAKE_CXX_FLAGS}")message("CMAKE_OSX_DEPLOYMENT_TARGET is ${CMAKE_OSX_DEPLOYMENT_TARGET}")
elseif(LINUX)SET(CMAKE_BUILD_TYPE Debug)SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
endif(WIN32)# 引入Qt的核心库
find_package(Qt5Core $ENV{QTVERSION} REQUIRED)
find_package(Qt5Gui $ENV{QTVERSION} REQUIRED)
find_package(Qt5Widgets $ENV{QTVERSION} REQUIRED)set (NAME CcQtApp)add_executable(${NAME} ${exe_property} main.cpp)# 使用Qt核心库
qt5_use_modules(${NAME} Core)
qt5_use_modules(${NAME} Gui)
qt5_use_modules(${NAME} Widgets)

2、编写main.cpp测试demo

#include <QApplication>
#include <QWidget>int main(int argc, char *argv[])
{QApplication app(argc, argv);QWidget window;window.resize(650, 350);window.setWindowTitle("简单的cmake构建的Qt窗口程序");window.show();return app.exec();
}

3、创建一个build文件夹(生成项目文件,不用污染源代码,方便阅读)

        

4、进入build目录执行以下命令

 cmake -G"Visual Studio 16 2019" -A Win32 ..

说明-A Win32生成的是win32(x86)的工程,默认不写为x64

5、在build下打开.sln文件

6、打开sln进行编译

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/703254.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

介绍 Gradio 与 Hugging Face

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 我们可以使用 Gradio 库为我们的模型构建演示。Gradio 允许您完全使用 Python 为任何机器学习模型构建、自定义和共享基于 Web 的演示。使机器学习模型变得可交互和易于使用。 为什么首先要为您的机器…

Parade Series - NVR Stat

获取文件夹占用空间信息 DIR %NVRHOME% /W /SDIR %NVRHOME% /s | tail -n2 | sed s/,//g | awk {if(NR1){key"Used";}else{key"Free";};sum$3/(1024*1024);unit"MB";if(sum^>1024){sumsum/1024;unit"GB";}printf("{\"Ty…

Ansible group模块 该模块主要用于添加或删除组。

目录 创建组验证删除组验证删除一个不存在的组 常用的选项如下&#xff1a; gid  #设置组的GID号 name  #指定组的名称 state  #指定组的状态&#xff0c;默认为创建&#xff0c;设置值为absent为删除 system  #设置值为yes&#xff0c;表示创建为系统组 创建组 ansib…

【Leetcode】938. 二叉搜索树的范围和

文章目录 题目思路代码结论 题目 题目链接 给定二叉搜索树的根结点 root&#xff0c;返回值位于范围 [low, high] 之间的所有结点的值的和。 示例 1&#xff1a; 输入&#xff1a;root [10,5,15,3,7,null,18], low 7, high 15 输出&#xff1a;32 示例 2&#xff1a; 输入…

linux+fortify

系统版本:Ubuntu22.04桌面版 一:登录root用户关闭防火墙 sudo passwd root systemctl stop ufw.service systemctl disable ufw.service 二:开启ssh服务 sudo apt update sudo apt install openssh-server sudo systemctl start ssh sudo systemctl status ssh连接上WinS…

笔记本如何录屏?很简单,我来告诉你

“最近遇到了一些工作上的问题&#xff0c;需要录制一些会议和讨论的内容&#xff0c;以便于后续的整理和回顾。但是&#xff0c;我没有使用过笔记本进行录屏&#xff0c;不知道该如何操作。大家有没有简单易懂的笔记本录屏指南&#xff0c;教教我&#xff01;” 在当今数字化…

vue3(vite)+electron打包踩坑记录(1)

vue3(vite)electron打包踩坑记录 - 打包vue 第一步 编译vue 使用vite构建vue&#xff0c;package.json如下 {"name": "central-manager","private": true,"version": "0.0.0","type": "commonjs",&q…

2D目标检测正负样本分配集合

一&#xff1a;CenterNet Center point based正负样本分配方式&#xff1a;中心像素分配为当前目标。 如果同类的两个高斯核具有交叠的情况&#xff0c;我们逐元素【像素】的选取最大值。Center point based 正样本分配方式的缺点&#xff1a;如果两个不同的物体完美匹配&…

CFS的覆灭,Linux新调度器EEVDF详解

本文主要总结了EEVDF论文和Linux内核实现中关键逻辑的推导&#xff0c;着重强调代码逻辑和论文公式之间的关系&#xff0c;它又长又全&#xff0c;像今天的汤圆又大又圆:D Warn&#xff1a;多行的公式编号渲染有点问题&#xff0c;当存在多行公式时&#xff0c;仅对最后一条式…

什么是媒体发稿?发稿媒体分类及发稿流程

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体发稿是一种企业推广和宣传的手段&#xff0c;通过媒体渠道传递企业信息和形象。 媒体发稿的含义在于&#xff0c;当企业有新闻、事件或其他消息需要对外公布时&#xff0c;可以选择…

第三节:Vben Admin登录对接后端login接口

系列文章目录 第一节&#xff1a;Vben Admin介绍和初次运行 第二节&#xff1a;Vben Admin 登录逻辑梳理和对接后端准备 文章目录 系列文章目录前言一、Flask项目介绍二、使用步骤1.User模型创建2.迁移模型3. Token创建4. 编写蓝图5. 注册蓝图 三. 测试登录总结 前言 上一节&…

【基于Ubuntu20.04的Autoware.universe安装过程】方案一:虚拟机 | 详细记录 | Vmware | 全过程图文 by.Akaxi

目录 一、Autoware.universe背景 二、虚拟机配置 三、Ubuntu20.04安装 四、GPU显卡安装 五、ROS2-Galactic安装 六、ROS2-dev-tools安装 七、rmw-implementation安装 八、pacmod安装 九、autoware-core安装 十、autoware universe dependencies安装 十一、安装pre-c…

[ai笔记12] chatGPT技术体系梳理+本质探寻

欢迎来到文思源想的ai空间&#xff0c;这是技术老兵重学ai以及成长思考的第12篇分享&#xff01; 这周时间看了两本书&#xff0c;一本是大神斯蒂芬沃尔弗拉姆学的《这就是ChatGPT》,另外一本则是腾讯云生态解决方案高级架构师宋立恒所写的《AI制胜机器学习极简入门》&#xf…

2024最新水果软件FL Studio21版本介绍与功能对比

FL Studio21前身为Fruity Loops&#xff0c;是一款由Image-Line公司开发的数字音频工作站&#xff08;DAW&#xff09;。它广泛用于音乐制作、编曲、混音和录音等领域。随着软件的不断更新迭代&#xff0c;FL Studio推出了多个版本&#xff0c;以满足不同用户的需求。 FL Studi…

数字化转型导师坚鹏:县区级政府数字化转型案例研究

县区级政府数字化转型案例研究 课程背景&#xff1a; 很多县区级政府存在以下问题&#xff1a; 不清楚县区级政府数字化转型的政务服务类成功案例 不清楚县区级政府数字化转型的社会管理类成功案例 不清楚县区级政府数字化转型的智慧城市类成功案例 课程特色&#xff…

【android】android studio生成aar包并在其他工程引用aar包(类/函数/activity)

android studio生成aar包并在其他工程引用aar包 arr引用和jar引用的区别1.ARR实现简单的JAVA/Kotlin类和函数调用过程1.1.新建需要打包成AAR的模块类1.2.新建需要调用的类1.3 创建 AAR 文件&#xff1a;1.4 AAR文件使用1.5 函数调用 2.实现AAR中activity的调用过程2.1 **特别说…

数字化转型导师坚鹏:地市级政府数字化转型案例研究

地市级政府数字化转型案例研究 课程背景&#xff1a; 很多地市级政府存在以下问题&#xff1a; 不清楚地市级政府数字化转型的政务服务类成功案例 不清楚地市级政府数字化转型的社会管理类成功案例 不清楚地市级政府数字化转型的智慧城市类成功案例 课程特色&#xff…

从软硬件以及常见框架思考高并发设计

目录 文章简介 扩展方式 横向扩展 纵向扩展 站在软件的层面上看 站在硬件的层面上看 站在经典的单机服务框架上看 性能提升的思考方向 可用性提升的思考方向 扩展性提升的思考方向 文章简介 先从整体&#xff0c;体系认识&#xff0c;理解高并发的策略&#xff0c;方…

【DAY04 软考中级备考笔记】数据结构基本结构和算法

数据结构基本结构和算法 2月25日 – 天气&#xff1a;晴 周六玩了一天&#xff0c;周天学习。 1. 什么是数据结构 数据结构研究的内容是一下两点&#xff1a; 如何使用程序代码把现实世界的问题信息化如何用计算机高效地处理这些信息从创造价值 2. 什么是数据 数据是信息的…

【教程】 iOS混淆加固原理篇

摘要 本文介绍了iOS应用程序混淆加固的缘由&#xff0c;编译过程以及常见的加固类型和逆向工具。详细讨论了字符串混淆、类名、方法名混淆、程序结构混淆加密等加固类型&#xff0c;并介绍了常见的逆向工具和代码虚拟化技术。 引言 在iOS开发中&#xff0c;为了保护应用程序…