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.mzph.cn/news/592661.shtml

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

相关文章

基于PCA-WA(Principal Component Analysis-weight average)的图像融合方法 Matlab代码及示例

摘要&#xff1a; 高效地将多通道的图像数据压缩&#xff08;如高光谱、多光谱成像数据&#xff09;至较低的通道数&#xff0c;对提高深度学习&#xff08;DL&#xff09;模型的训练速度和预测至关重要。本文主要展示利用PCA降维结合weight-average的图像融合方法。文章主要参…

leetcode第206题反转链表❤

一&#xff1a;题目&#xff1a; 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网…

【OpenCV】在MacOS上源码编译OpenCV

在MacOS上源码编译OpenCV 1. 下载项目源码2. 创建CMake编译文件3. 编译安装4. 案例测试5. 总结 前言 在做视觉任务时&#xff0c;我们经常会用到开源视觉库OpenCV&#xff0c;OpenCV是一个基于Apache2.0许可&#xff08;开源&#xff09;发行的跨平台计算机视觉和机器学习软件…

js中函数动态调用

文章目录 一、场景二、方法2.1、动态函数2.2、eval()函数 三、最后 一、场景 在JS开发中&#xff0c;例如有些场景下&#xff0c;后端要求一个功能要请求不同的接口&#xff0c;但是传参及后续逻辑其实都是一样的&#xff0c;有些同学可能会想到在接口url处统一处理就好&#…

在 docker 容器中配置双网卡,解决通讯的问题

目录 1. 查看当前网络信息 2. 创建自定义网络 3. 查看网卡信息 4. 建立双网卡模式 5. 查看容器的网络 6. 从双网卡中删除默认网卡 已经创建好了的 Docker 容器&#xff0c;要修改它的IP比较麻烦&#xff0c;网上找了几种不同的方法&#xff0c;经过试验都没有成功&…

HeyGen怎么使用想使用高级功能如何订阅

HeyGen是一款AI视频工具&#xff0c;可以让用户轻松地用不同语言说话。 HeyGen是一个用于生成“虚拟化身&#xff08;数字人&#xff09;”视频的工具。 根据其官网的介绍&#xff0c;HeyGen可以通过文本生成视频&#xff0c;有不同的视频模板&#xff0c;可以定制化人物形象、…

Android Studio报错:connect refused

报错信息 解决办法&#xff1a;在System settings里取消代理&#xff0c;将HTTP Proxy设置为 No proxy 但是我发现我的还不行&#xff0c;还是报错&#xff0c;还是connect refused&#xff1a; 我发现虽然在System settings里已经取消代理&#xff0c;但实际项目运行时还是走…

鸿蒙原生应用/元服务开发-Serverless账户验证码的问题

在应用/元服务早期使用过程中&#xff0c;-Serverless账户验证码的格式是[AGC][应用/元服务名称]&#xff0c;如下图。 但是&#xff0c;在最近&#xff0c;[应用/元服务]名称直接变成了【default】,用户收到这种验证码后&#xff0c;心里存有疑虑的&#xff0c;这是哪里配置…

OSG-渲染状态、纹理映射(一)

1、渲染状态 OSG 支持绝大部分的OpenGL固定功能管道(fixed function pipeline)渲染,如Alpha检验、Blending融合剪切平面、颜色蒙板、面选(face culling)深度和模板检验、雾效、点和线的光栅化(rasterization)等。OSG 的渲染状态也允许应用程序指定顶点着色(vertex shader)和片段…

Python 数据库(一):使用 mysql-connector-python 操作 MySQL 数据库

大家好&#xff0c;我是水滴~~ 当涉及到使用 Python 操作 MySQL 数据库时&#xff0c;mysql-connector-python 库是一个强大而常用的选择。该库提供了与 MySQL 数据库的交互功能&#xff0c;使您能够执行各种数据库操作&#xff0c;如连接数据库、执行查询和插入数据等。在本文…

R语言——R函数、选项参数、数学统计函数(六)

目录 一、R函数 二、选项参数 三、数学统计函数 四、参考 一、R函数 1.lm() lm()是R语言中经常用到的函数&#xff0c;用来拟合回归模型。它是拟合线性模型最基本的函数 lm()格式如下&#xff1a; fit<-lm(formula,data) 其中&#xff0c;formula指要拟合的模型形式…

draw流程图工具导入云原生(CNCF)相关控件

目录 1、通过draw导入xml文件&#xff0c;获取云原生相关的空间 2、引用自己的资源链接&#xff1a; 1、通过draw导入xml文件&#xff0c;获取云原生相关的空间 导入资源图库&#xff0c;资源放在下方&#xff0c;大家可以下载&#xff1a; 2、引用自己的资源链接&#xff1a;…

Vue实现JSON字符串格式化编辑器组件

相信很多同学都用过网上的在线JSON格式化工具来将杂乱的JSON数据转换成易于我们阅读和编辑的格式。那么&#xff0c;你有没有想过自己动手实现一个这样的工具呢&#xff1f;今天&#xff0c;我将介绍如何使用Vue.js来构建一个简单的JSON格式化工具。 功能简述 支持格式化JSON字…

Linux使用yum命令安装postgrepsql

1.检查安装源 yum search postgresql 2.安装 yum install postgresql-server 3.启动数据库 service postgresql start 4.查看启动状态 service postgresql status 5.登陆测试 su - postgrep psql \l6.远程连接 6.1修改配置文件 在pg_hba.conf增加host all all 0.0.0…

解决Android AAPT: error: resource android:attr/lStar not found. 问题

错误信息 /xxx/gjc/.gradle/caches/transforms-2/files-2.1/930c42acd29d295ce5bc495c3b84423e/core-1.9.0/res/values/values.xml:104:5-113:25: AAPT: error: resource android:attr/lStar not found. not found 资源位置 场景 原Android studio中的项目都是在git上面拉的老项…

数据结构与算法python版本之线性结构之队列Quene

什么是队列&#xff1f; 队列是一种有次序的数据集合&#xff0c;其特征是&#xff1a;新数据项的添加总发生在一端&#xff08;通常称为“尾rear”端&#xff09;&#xff0c;而现存数据项的移除总发生在另一端&#xff08;通常称为“首front”端&#xff09;&#xff1b;当数…

详解静态网页数据获取以及浏览器数据和网络数据交互流程-Python

目录 前言 一、静态网页数据 二、网址通讯流程 1.DNS查询 2.建立连接 3.发送HTTP请求 4.服务器处理请求 5.服务器响应 6.渲染页面 7.页面交互 三、URL/POST/GET 1.URL 2.GET 形式 3.POST 形式 四.获取静态网页数据 1.requests库 点关注&#xff0c;防走丢&am…

粘接PI膜除了使用PI膜专用UV胶粘接,还可以使用热固化环氧胶来解决!

热固化环氧胶也是粘接聚酰亚胺&#xff08;PI&#xff09;膜的一种常见方法。 热固化环氧胶是一种在加热的条件下固化成坚固状态的胶水&#xff0c;在涂抹或涂覆胶水后&#xff0c;通过加热&#xff0c;胶水中的化学反应被触发&#xff0c;导致其硬化和固化&#xff0c;从而形…

C#语法进阶 Lambda

Lambda lambda:匿名方法 演变过程&#xff1a; 版本一&#xff1a; 首先创建一个委托&#xff1a; 创建委托需要调用的方法 调用 版本二&#xff1a;匿名方法 没有名字的方法&#xff0c;前面加一个delegate 这样写的话 可以访问局部变量 调用结果&#xff1a; 版本…

跑腿配送系统技术探析

概述 跑腿配送系统是一种基于现代科技的服务平台&#xff0c;通过智能化的技术手段&#xff0c;实现用户需求的快速响应和高效配送。本文将探讨该系统的核心技术原理&#xff0c;以及在实际开发中的一些代码示例。 技术原理 1. 用户请求与任务分配 跑腿配送系统的第一步是…