首页 > 其他分享 >CMake构建学习笔记1-概述

CMake构建学习笔记1-概述

时间:2024-08-23 20:27:29浏览次数:10  
标签:CMake 编程语言 程序 C++ 学习 概述 笔记 构建

CMake可以说已经是C/C++构建的事实标准了,目前绝大多数的C/C++项目都已经采用CMake进行构建,好处至少有两点:一个是跨平台,另一个是方便依赖库引入。不过笔者认为,像CMake这种工具其实也没必要特意学习,说到底它也不过是方便程序员使用的工具,没有它程序员也能进行C/C++程序的构建,只不过会麻烦一点。像这样的工具的学习,应该是遇到了已经存在的问题,再带着问题去学习它,方才有效果。否则的话,连使用这个工具的目的都不明白,又怎么学的进去呢?

简单来说,CMake是用来构建C/C++程序的。笔者在对CMake有一定了解之前,经常将构建程序说成是编译程序,这样其实是不太准确的。其实要生产一个大型的程序,通常包含非常多的构建过程:预处理、编译、汇编、链接、测试、安装以及清理等。不止是C/C++程序,基本上所有编程语言的程序都会将代码文件组织成工程,来管理这个代码项目的构建过程,只不过它们各自的步骤略有不同。理解了这一点,就能很快上手其他编程语言的构建过程,这也是软件工程中对代码进行组织管理的关键部分。

很多人说,CMake的语法太丑陋了,用起来一点都不简洁优雅。其实真要这么说,那JavaScript的语法才是宇宙第一的烂,还不是成为了目前Web前端的唯一编程语言。其实一门编程语言设计好不好只是一方面,只要确实解决了行业的痛点问题,用的人就会多,就会有越来越多的人给其打补丁,就会越来越流行。CMake也是如此,之所以会越来越多的人用,就是因为其确实解决了C/C++程序跨平台编译的行业痛点。十几年前,其实只有一少部分项目使用CMake,但CMake一直坚持更新改进,到今天甚至很多IDE都支持直接导入CMake工程了。

回到CMake学习的问题,之所以觉得比较困难,其中一个原因就是CMake包含了几乎所有C/C++程序构建的内容,这对于一个初学者来说是很难上手了。最适合初学者上手的是什么呢?像Visual Studio 创建的工程那样,下一步下一步,有啥特殊的就右键属性设置一下,所谓的构建过程就是按一下F5就行了。但是要学习CMake肯定不是这样,不说要细致地掌握这个构建工具链,至少要知道软件构建的大概步骤和流程。要了解这一点,不妨从编译C/C++程序的依赖库开始。

作为本篇的结果,说一下CMake的安装。CMake的安装没有什么特别的,直接在官网上下载然后下一步下一步安装即可,不过有两点需要注意:第一个是要确保正确添加了环境变量,保证CMake指令能被系统识别到;第二个版本用新不用旧,因为版本越新支持查找的依赖库越多。

标签:CMake,编程语言,程序,C++,学习,概述,笔记,构建
From: https://www.cnblogs.com/charlee44/p/18377032

相关文章

  • 程序设计语言基础-编译过程概述+表达式
    程序设计语言分类面向机器的语言由0、1组成的机器指令序列或汇编语言(如:moveax,bx),可读性差,难以修改和维护。面向应用程序的语言如,Java、C、C++、Python、Delphi、PASCAL等,更接近人类语言,提高程序设计效率。程序设计语言分类生成目标代码过程编译程序词法分析输入源程......
  • cmake具体示例
    CMake具体示例目录结构project0702/├──CMakeLists.txt#主目录的CMake配置文件├──build/#构建输出目录│└──Debug/#Debug模式下的输出目录├──lib/#存放......
  • Trie 学习笔记
    在此记录若干Trie好题。1.洛谷P3732[HAOI2017]供给侧改革点击查看题面给定一个长度为\(n\)的\(\texttt{01}\)字符串\(S\)。令\(\operatorname{data}(L,R)\)表示:在字符串\(S\)中,起始位置在\([L,R]\)之间的这些后缀之中,具有最长公共前缀的两个后缀的最长公......
  • 《数据资产管理核心技术与应用》读书笔记-第五章:数据服务(一)
    《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,全书共分10章,第1章主要让读者认识数据资产,了解数据资产相关的基础概念,以及数据资产的发展情况。第2~8章主要介绍大数据时代数据资产管理所涉及的核心技术,内容包括元数据的采集与存储、数据血缘、数据质量、数据监控与......
  • 少儿编程概述
    少儿编程少儿编程技术参考少儿编程的核心理念是培养孩子思维模式,解决问题逻辑等综合能力,与传统意义上的编程有很大区别。前者培养能力,后者专注技术。国外少儿编程较国内更早开始发展,主要代表有开源平台Scratch以及拥有成熟体系的Tynker。Scratch语言与编程猫......
  • 高数笔记 1.函数
    1.非正式定义我们在初中阶段就有接触过“函数”的概念,不妨回顾一下初二教科书的定义:一般地,在一个变化过程中,如果有两个变量\(x\)与\(y\),并且对于\(x\)的每一个确定的值,\(y\)都有唯一确定的值与之对应,那么我们说\(x\)是自变量,\(y\)是\(x\)的函数。如果当\(x=a\)时\(y=b\),那么\(b......
  • wqs 二分学习笔记
    蒟蒻的第一篇学习笔记qwqwqs二分用于解决此类问题n个物品,从中选恰好m个,最大化收益。而且你发现,如果没有选m个的限制,这道题是非常好做的。使用前提1、恰好选k个,至多至少不行2、答案满足凸性什么是凸性?设选i个物品时的收益为fi如果把它画成函数,那么它长这样(上凸包)或者这样......
  • 设计模式概述和设计原则
    1.设计模式的概念软件设计模式(SoftwareDesignPattern),是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具......
  • 操作系统笔记1
    OS概念负责管理协调硬件,软件等计算机资源的工作为上层用户,应用程序提供简单易用的服务是一种系统软件OS功能和目标资源的管理者处理机管理 如:管理CPU调度存储器管理如:执行程序,需要将数据导入到内存文件管理如:文件夹与文件存储设备管理如:控制音响设备向上......
  • 【Android笔记】Android APK编译打包流程
    前言本文将介绍Android从一个项目打包成APK的过程,其中涉及AndroidJava和Kotlin文件、资源文件、清单文件、依赖jar包和so库等在打包过程中处理。步骤总体的打包流程如下图,下面就介绍下详细的打包步骤。1、将aidl文件编译成java文件在构建过程中,Gradle会调用AIDL编......