CMake支持的编译平台和IDE

文章目录

  • 简介
  • 支持的IDE
  • Visual Studio支持
    • 示例
  • 其他编译器和生成器支持
    • MinGW示例
  • IDE集成
    • Eclipse示例
  • 实验性和特殊平台支持
  • 总结

简介

CMake是一个非常强大的跨平台自动化构建工具,它支持生成多种类型的项目文件,覆盖了广泛的开发环境和编译器。在这篇博客中,我们将深入探讨CMake支持的各种平台和配置文件类型,以及它们在实际开发中的应用。

我们来看看支持哪些编译器

CMake 生成选项
Visual Studio
NMake Makefiles
MinGW Makefiles
Unix Makefiles
Ninja
其他选项
Visual Studio 17 2022
Visual Studio 16 2019
Visual Studio 15 2017
Visual Studio 14 2015
Visual Studio 12 2013
Visual Studio 11 2012
Visual Studio 10 2010
Visual Studio 9 2008
使用 -A 配置架构
使用 -A 配置架构
可选 Win64 或 ARM
可选 Win64 或 ARM
可选 Win64 或 ARM
可选 Win64 或 ARM
可选 Win64 或 IA64
可选 Win64 或 IA64
CodeBlocks
Eclipse CDT4
Kate
Sublime Text 2
Green Hills MULTI
Borland Makefiles
MSYS Makefiles
NMake Makefiles JOM
Ninja Multi-Config
Watcom WMake
CodeLite

支持的IDE

找了部分图标,偷个懒

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  Visual Studio 17 2022        = 生成 Visual Studio 2022 项目文件.使用 -A 选项配置架构.Visual Studio 16 2019        = 生成 Visual Studio 2019 项目文件.使用 -A 选项配置架构.Visual Studio 15 2017 [arch] = 生成 Visual Studio 2017 项目文件.可选 [arch] 可以是 "Win64" 或 "ARM".
* Visual Studio 14 2015 [arch] = 生成 Visual Studio 2015 项目文件.可选 [arch] 可以是 "Win64" 或 "ARM".Visual Studio 12 2013 [arch] = 生成 Visual Studio 2013 项目文件.可选 [arch] 可以是 "Win64" 或 "ARM".Visual Studio 11 2012 [arch] = 生成 Visual Studio 2012 项目文件.可选 [arch]可以是 "Win64" 或 "ARM".Visual Studio 10 2010 [arch] = Deprecated.  生成 Visual Studio 2010项目文件.  可选 [arch] 可以是"Win64" 或 "IA64".Visual Studio 9 2008 [arch]  = 生成 Visual Studio 2008 项目文件.可选 [arch] 可以是 "Win64" 或 "IA64".Borland Makefiles            = 生成 Borland makefiles.NMake Makefiles              = 生成 NMake makefiles.NMake Makefiles JOM          = 生成 JOM makefiles.MSYS Makefiles               = 生成 MSYS makefiles.MinGW Makefiles              = 生成 一个用于使用的文件mingw32-make。Green Hills MULTI            = 生成 Green Hills MULTI files(实验,进行中的工作).Unix Makefiles               = 生成 standard UNIX makefiles.Ninja                        = 生成 build.ninja files.Ninja Multi-Config           = 生成 build-<Config>.ninja files.Watcom WMake                 = 生成 Watcom WMake makefiles.CodeBlocks - MinGW Makefiles = 生成 CodeBlocks 项目文件.CodeBlocks - NMake Makefiles = 生成 CodeBlocks 项目文件.CodeBlocks - NMake Makefiles JOM= 生成 CodeBlocks 项目文件.CodeBlocks - Ninja           = 生成 CodeBlocks 项目文件.CodeBlocks - Unix Makefiles  = 生成 CodeBlocks 项目文件.CodeLite - MinGW Makefiles   = 生成 CodeLite 项目文件.CodeLite - NMake Makefiles   = 生成 CodeLite 项目文件.CodeLite - Ninja             = 生成 CodeLite 项目文件.CodeLite - Unix Makefiles    = 生成 CodeLite 项目文件.Eclipse CDT4 - NMake Makefiles= 生成 Eclipse CDT 4.0 项目文件.Eclipse CDT4 - MinGW Makefiles= 生成 Eclipse CDT 4.0 项目文件.Eclipse CDT4 - Ninja         = 生成 Eclipse CDT 4.0 项目文件.Eclipse CDT4 - Unix Makefiles= 生成 Eclipse CDT 4.0 项目文件.Kate - MinGW Makefiles       = 生成 Kate 项目文件.Kate - NMake Makefiles       = 生成 Kate 项目文件.Kate - Ninja                 = 生成 Kate 项目文件.Kate - Unix Makefiles        = 生成 Kate 项目文件.Sublime Text 2 - MinGW Makefiles= 生成 Sublime Text 2 项目文件.Sublime Text 2 - NMake Makefiles= 生成 Sublime Text 2 项目文件.Sublime Text 2 - Ninja       = 生成 Sublime Text 2 项目文件.Sublime Text 2 - Unix Makefiles= 生成 Sublime Text 2 项目文件.

Visual Studio支持

CMake支持从Visual Studio 2008到Visual Studio 2022的所有主要版本。对于Visual Studio 2017及以上版本,CMake引入了-A选项来配置架构,而对于2015及更早的版本,则可以通过在命令中指定“Win64”或“ARM”来选择架构。这为在Windows平台上使用最新的开发工具提供了极大的便利。

示例

生成Visual Studio 2019的项目文件:

bashCopy code
cmake -G "Visual Studio 16 2019" -A x64

其他编译器和生成器支持

CMake的跨平台能力不仅限于Visual Studio。它还支持各种其他编译器和生成器,如Borland Makefiles、NMake(包括JOM)、MSYS、MinGW等。这意味着你可以在多种环境中使用相同的CMake配置来构建你的项目。

MinGW示例

生成用于MinGW的Makefiles:

bashCopy code
cmake -G "MinGW Makefiles"

IDE集成

CMake的另一个强大功能是它可以生成特定于IDE的项目文件,如CodeBlocks、Eclipse CDT4、Kate、Sublime Text等。这使得开发者可以在他们选择的IDE中轻松地管理和构建CMake项目。

Eclipse示例

生成适用于Eclipse CDT4的项目文件:

bashCopy code
cmake -G "Eclipse CDT4 - Unix Makefiles"

实验性和特殊平台支持

除了上述主流平台,CMake还在不断扩展其支持范围,包括实验性支持如Green Hills MULTI,以及特殊平台的支持。这显示了CMake对于适应不同开发环境和需求的承诺。

总结

CMake的多样化生成器和平台支持使其成为一个极为强大的工具,无论是在传统的开发环境中,还是在寻求特定IDE集成或实验性平台支持的情况下。它提供了一种统一的方法来处理项目构建,极大地简化了跨平台开发的复杂性。无论你是一个专注于Windows应用开发的程序员,还是一个需要在多种操作系统上工作的软件工程师,CMake都是一个不可或缺的工具。

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

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

相关文章

【Java】SpringBoot整合xxl-job学习使用详解

文章目录 介绍作用如何使用下载项目中央仓库地址环境调度中心初始化“调度数据库”配置部署“调度中心”部署项目调度中心集群&#xff08;可选&#xff09;其他&#xff1a;Docker 镜像方式搭建调度中心配置部署“执行器项目” 执行器maven依赖执行器配置执行器组件配置执行器…

天津Java入门培训班 如何选择Java机构?

作为最受欢迎的编程语言&#xff0c;Java简直是IT领域的敲门砖&#xff0c;只要精通Java语言&#xff0c;找到好工作&#xff0c;进入大企业又多了一层保障。很多人都向往Java编程的广阔就业前景&#xff0c;却苦于不懂Java编程知识&#xff0c;一直在自学和参加培训中纠结。 …

设计模式:简单工厂模式、工厂方法模式、抽象工厂模式

简单工厂模式、工厂方法模式、抽象工厂模式 1. 为什么需要工厂模式&#xff1f;2. 简单工厂模式2.1. 定义2.2. 代码实现2.3. 优点2.4. 缺点2.5. 适用场景 3. 工厂方法模式3.1. 有了简单工厂模式为什么还需要有工厂方法模式&#xff1f;3.2. 定义3.3. 代码实现3.4. 主要优点3.5.…

LinkedList与ArrayList的比较

1.LinkedList 基于双向链表&#xff0c;无需连续内存 随机访问慢&#xff08;要沿着链表遍历&#xff09; 头尾插入删除性能高 占用内存多 2.ArrayList 基于数组&#xff0c;需要连续内存 随机访问快&#xff08;指根据下标访问&#xff09; 尾部插入、删除性能可以&…

挑战 ChatGPT 和 Google Bard 的防御

到目前为止&#xff0c;科学家已经创建了基于人工智能的聊天机器人&#xff0c;可以帮助内容生成。我们还看到人工智能被用来创建像 WormGPT 这样的恶意软件&#xff0c;尽管地下社区对此并不满意。但现在正在创建聊天机器人&#xff0c;可以使用生成人工智能通过即时注入活动来…

Android Matrix剪切clipPath缩放scale图片postTranslate圆形放大镜,Kotlin(1)

Android Matrix剪切clipPath缩放scale图片postTranslate圆形放大镜&#xff0c;Kotlin&#xff08;1&#xff09; 实现查看图片的放大镜&#xff0c;放大镜随着手指在屏幕上的移动&#xff0c;放大镜里面展示手指触点为中心、半径长度的圆形放大后的图片。 剪切出一块圆形Path…

K8S集群部署MySql

挂载MySQL数据卷 在k8s集群中挂载MySQL数据卷 需要安装一个NFS。 在主节点安装NFS yum install -y nfs-utils rpcbind 在主节点创建目录 mkdir -p /nfs chmod 777 /nfs 更改归属组与用户 chown -R nfsnobody:nfsnobody /nfs 配置共享目录 echo "/nfs *(insecure,rw,s…

大数据平台Bug Bash大扫除最佳实践

一、背景 随着越来越多的"新人"在日常工作以及大促备战中担当大任&#xff0c;我们发现仅了解自身系统业务已不能满足日常系统开发运维需求。为此&#xff0c;大数据平台部门组织了一次Bug Bash活动&#xff0c;既能提升自己对兄弟产品的理解和使用&#xff0c;又能…

【已解决】打印PDF文件,如何跳过不需要的页面?

打印PDF文件的时候&#xff0c;有时候我们只需要打印其中的几页&#xff0c;并不需要全部打印&#xff0c;那如何在打印时跳过那些不需要的页面呢&#xff1f;不清楚的小伙伴一起来看看吧&#xff01; 如果你是通过网页打开PDF文件&#xff0c;那么可以在页面中找到并点击“打…

k8s的声明式资源管理

在k8s当中支持两种声明资源的方式&#xff1a; 1、 yaml格式&#xff1a;主要用于和管理资源对象 2、 json格式&#xff1a;主要用于在API接口之间进行消息传递 声明式管理方法(yaml)文件 1、 适合对资源的修改操作 2、 声明式管理依赖于yaml文件&#xff0c;所有的内容都…

内存管理机制

内存管理机制与内存映射相关。 一、C与C 之所以将C与C放在一起是因为C是C的超集&#xff1b; 但是C是面向过程语言&#xff0c;C是面向对象的语言&#xff1b; C与C都可以使用malloc、calloc、realloc来申请内存空间&#xff1b; 其中void* malloc(size_t size)是在内存的动态…

2023年度回顾:怿星科技的转型与创新

岁月不居&#xff0c;时节如流。随着2023年的落幕&#xff0c;怿星科技在这一年中不仅实现了自身的转型&#xff0c;还在技术创新、产品研发、行业合作和人才培养等方面取得了显著的成就。这一年&#xff0c;怿星科技正式完成了从服务型公司向产品型公司的战略转变&#xff0c;…

软件测试方法分类-按照开发阶段划分细讲

前面我给出了整体的软件测试分类&#xff0c;那么接下来&#xff0c;我会将每个分类进行细讲。 第一个我们要说到的就是按照开发阶段划分。 我们都知道软件测试方法分类中&#xff0c;如果按照开发阶段划分&#xff0c;可以分为&#xff1a; 1&#xff0c;单元测试 (Unit Te…

VMware 虚拟机 ubuntu 20.04 硬盘扩容方法

前言 最近由于需要编译 【RK3568】的 Linux SDK&#xff0c;发现 虚拟机默认的 200G 空间不足了&#xff0c;因此想增加这个 200G 空间的限制&#xff0c;通过网络上查找了一些方法&#xff0c;加上自己亲自验证&#xff0c;确认 硬盘扩容 正常&#xff0c;方法也比较的容易&a…

P5534 【XR-3】等差数列————C++、C

目录 【XR-3】等差数列题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示 解题思路Code运行结果 【XR-3】等差数列 题目描述 小 X 给了你一个等差数列的前两项以及项数&#xff0c;请你求出这个等差数列各项之和。 等差数列&#…

如何使用idea部署springboot项目全过程

博主介绍&#xff1a; ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅 &#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实…

k8s的陈述式管理

k8s的陈述式管理&#xff1a; 所谓的陈述式管离也就是命令行工具 优点&#xff1a;90%以上都可以满足 对资源的增删查比较方便&#xff0c;对改不是很友好 缺点&#xff1a;命令比较冗长&#xff0c;复杂&#xff0c;难记 声明式&#xff1a; k8s当中的YAML文件来实现资源管…

对接第三方接口鉴权(Spring Boot+Aop+注解实现Api接口签名验证)

前言 一个web系统&#xff0c;从接口的使用范围也可以分为对内和对外两种&#xff0c;对内的接口主要限于一些我们内部系统的调用&#xff0c;多是通过内网进行调用&#xff0c;往往不用考虑太复杂的鉴权操作。但是&#xff0c;对于对外的接口&#xff0c;我们就不得不重视这个…

Axure骚操作:【制作可暂停与不可暂停进度加载条】

目录 一、不可暂停进度条 1.1 前期准备 1.2 效果假想 1.3 适用场景 1.4 实现步骤 &#xff08;1&#xff09;除按钮外的元件设置隐藏 &#xff08;2&#xff09;给按钮添加交互 &#xff08;3&#xff09;给变量值文本标签添加交互 &#xff08;4&#xff09;给进度条矩…

android开发百度地图api实现定位图标随手机方向转动

该功能的实现依赖于手机中的传感器元件如陀螺仪、加速度计等&#xff0c;具体开发详见android的官方开发文档&#xff1a; 传感器概览 | Android 开发者 | Android Developershttps://developer.android.com/guide/topics/sensors/sensors_overview?hlzh-cn要自定义一个传…