CMake入门教程【基础篇】CMake编译平台

文章目录

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

简介

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

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

  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/590884.shtml

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

相关文章

33--反射

1、反射(Reflection)的概念 1.1 反射的出现背景 Java程序中&#xff0c;所有的对象都有两种类型&#xff1a;编译时类型和运行时类型&#xff0c;而很多时候对象的编译时类型和运行时类型不一致。 Object obj new String("hello"); obj.getClass(); 例如&#xf…

【话题】ChatGPT等大语言模型为什么没有智能2

我们接着上一次的讨论&#xff0c;继续探索大模型的存在的问题。正巧CSDN最近在搞文章活动&#xff0c;我们来看看大模型“幻觉”。当然&#xff0c;本文可能有很多我自己的“幻觉”&#xff0c;欢迎批评指正。如果这么说的话&#xff0c;其实很容易得出一个小结论——大模型如…

DS1302N的时钟逻辑

时钟也是一个实时的串口&#xff0c;也是很简单的&#xff0c;不过要注意以下的要点&#xff1a; 要点&#xff1a; &#xff08;1&#xff09;里面有很多数据&#xff0c;所以需要定义一个结构体变量&#xff0c;将其中的数据写进去。 &#xff08;2&#xff09;写进去的数…

.Net Core 防御XSS攻击

网络安全攻击方式有很多种&#xff0c;其中包括XSS攻击、SQL注入攻击、URL篡改等。那么XSS攻击到底是什么?XSS攻击有哪几种类型? XSS攻击又称为跨站脚本&#xff0c;XSS的重点不在于跨站点&#xff0c;而是在于脚本的执行。XSS是一种经常出现在Web应用程序中的计算机安全漏洞…

算法基础之计数问题

计数问题 核心思想&#xff1a; 数位dp / 累加 累加 ​ 分情况讨论 &#xff1a; xxx 000 ~ abc –1 yyy 000 ~ 999 共 abc * 1000 种 特别地&#xff0c;当枚举数字0时 (找第4位为0的数) 前三位不能从000开始了 否则没这个数不合法(有前导零) xxx abc 2.1. d < 1 , 不…

UnityShader(四)一个最简单的顶点/片元着色器

目录 顶点/片元着色器的基本结构&#xff1a; 简单的例子 增加模型数据 顶点着色器和片元着色器之间的通信 顶点/片元着色器的基本结构&#xff1a; Shader "MyShaderName"{Properties{//属性}SubShader{//针对显卡A的SubShaderPass{//设置渲染状态和标签//开始C…

C++正则表达式全攻略:从基础到高级应用

C正则表达式全攻略&#xff1a;从基础到高级应用 一、基础知识二、正则表达式的基本匹配三、C中使用正则表达式四、高级正则表达式五、实践示例六、性能优化6.1、编译正则表达式6.2、避免过度使用回溯6.3、优化匹配算法 七、总结 一、基础知识 正则表达式是一种用于匹配、搜索…

voronoi diagram

voronoi diagram Generalized voronoi diagram GVD Boris Lau - dynamicvoronoi 重要三篇论文链接 dynamic voronoi ros github dynamic voronoi 论文解读 - silver bullet - 慢悠悠的小马车 Voronoi-Based-Hybrid-Astar &#xff08;重要&#xff09; 重要论文 Local a…

ORACLE Primavera P6, Unifier v23.12 系统分享

引言 根据上周的计划&#xff0c;我近日简单制作了一个基于ORACLE Primavera P6 EPPM 以及Unifier 最新版23.12的虚拟机演示环境&#xff0c;里面包括了p6 和 unifier的全套系统服务 此虚拟系统环境仅用于演示、培训和测试目的。如要在生产环境中使用此虚拟机&#xff0c;请您…

设计模式在Java开发中的应用

设计模式在Java开发中起着至关重要的作用。它们是一些被广泛接受的、经过验证有效的解决问题的方法。设计模式可以帮助开发人员构建可维护、可扩展和易于理解的代码。在本文中&#xff0c;我将介绍一些在Java开发中常用的设计模式&#xff0c;并解释它们的应用场景和优点。 单例…

系列二、RestTemplate简介

一、RestTemplate简介 1.1、概述 RestTemplate是一种便捷的访问RestFul服务的模板类&#xff0c;是Spring提供的用于访问Rest服务的客户端模板工具集&#xff0c;它提供了多种便捷访问远程HTTP服务的方法。 1.2、API https://docs.spring.io/spring-framework/docs/5.2.2.REL…

mysqldump导出函数、存储过程和视图

mysqldump导出函数、存储过程和视图 导出函数和存储过程导出视图定义 导出函数和存储过程 查看函数和存储过程&#xff1a; select routine_schema,routine_name,routine_type from information_schema.routines where routine_schemaDBNAME and routine_type in (FUNCTIO…

从马尔可夫奖励过程到马尔可夫决策到强化学习【02/2】

一、说明 随着 Open AI 于 2023 年 11 月 6 日发布GPT 代理&#xff0c;我们所有人都对它带来的支持和灵活性着迷。想象一下&#xff0c;有一个个性化的数字助手始终在您身边&#xff0c;根据您的喜好完成日常平凡任务或艰巨任务。但为这些定制代理提供动力的是强化学习&#x…

【C语言】Windows上用GTK写GUI程序

要使用GTK开发一个Windows图形用户界面程序&#xff0c;需要首先设置GTK开发环境。这通常包括安装GTK库和它的依赖&#xff0c;以及配置编译器和工具链。可以选择使用纯C语言和GTK库或者使用支持GTK绑定的其他语言&#xff0c;如Python、C或Rust。 1. 安装GTK开发库 在Window…

Linux apt 命令

apt&#xff08;Advanced Packaging Tool&#xff09;是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。 apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令&#xff0c;而且命令简洁而又好记。 apt 命令执行需要超级管理员权限(root)。 apt 语…

Prototype原型模式(创建对象)

原型模式&#xff1a;Prototype 链接&#xff1a;原型模式实例代码 注解 模式定义 使用原型实例指定创建对象的种类&#xff0c;然后通过拷贝这些原型来创建新的对象。 ——《设计模式》GoF 目的 在软件系统中&#xff0c;经常面临这“某些结构复杂的对象”的创建工作&am…

Java ArrayList解密

数组的大小是固定的&#xff0c;一旦创建的时候指定了大小&#xff0c;就不能再调整了。也就是说&#xff0c;如果数组满了&#xff0c;就不能再添加任何元素了。 ArrayList 在数组的基础上实现了自动扩容&#xff0c;并且提供了比数组更丰富的预定义方法&#xff08;各种增删改…

pillow像型学操作(转载笔记) --- 西北乱跑娃

Opencv、Matplotlib(plt)、Pillow(PIL)、Pytorch读取数据的通道顺序 需注意:Pillow加载图像后的尺寸是二维,图形化是三维,但无法打印三维尺寸。 详细区别: Opencv:uint8的ndarray数据,通道顺序[h, w, c],颜色通道BGR。 导入模块:import cv2 (1)cv2.imread() (2)cv…

论文阅读: AAAI 2022行人重识别方向论文-PFD_Net

本篇博客用于记录一篇行人重识别方向的论文所提出的优化方法《Pose-Guided Feature Disentangling for Occluded Person Re-identification Based on Transformer》&#xff0c;论文中提出的PDF_Net模型的backbone是采用《TransReID: Transformer-based Object Re-Identificati…

探寻最短路径之谜:Dijkstra算法详解

探寻最短路径之谜&#xff1a;Dijkstra算法详解 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;让我们一起深入研究一项在图论领域中备受推崇的算法…