首页 > 其他分享 >cmake简介及基本使用说明

cmake简介及基本使用说明

时间:2023-06-22 20:22:59浏览次数:51  
标签:cmake 简介 说明 编译 文件夹 构建 build 临时文件

CMAKE是一个开源、跨平台的编译、测试和打包工具,它使用比较简单的语言描述编译、安装的过程,输出Makefile或者project文件,再去执行构建
在linux环境下编写C++程序是没有类似windows下编译器的一键编译和运行的按钮,只能由开发人员进行手动编译、运行;当多人协同开发一个较大的项目时,会产生较多的源代码文件,因此需要说明编译的顺序,例如需要先编译什么 ,再编译什么,这个过程称之为构建(Build);为了减免这种繁琐而且复杂的劳动力,出现了make工具及makefile文件,makefile文件可以帮助我们很快的编译大量文件,最终形成可执行文件;但是编写Makefile文件的语法较为复杂,尤其是对于大型的复杂项目,编写Makefile的过程则更为困难。

而Cmake为我们提供了一套简洁的语法去定义构建的流程,CMake定义构建过程的文件称为CMakeLists.txt。在使用IDE进行开发的过程中,这个流程一般是由IDE自动完成的,开发者基本不需要干预,但是如果开发者需要控制构建的细节,则需要自己定义构建过程。

cmake 在执行时,会生产大量临时文件,如果直接在代码根目录执行cmake .命令,相信会看到比代码本身更多的临时文件。所有的临时文件直接出现在代码源文件夹,非常的不美观,而解决这种情况,一般的操作是外部构建
外部构建,通过在源文件夹外创建一个新的用于放置编译中间文件的文件夹,所有生成的工程管理临时文件、编译临时文件、编译最终生成文件都在该文件夹中。 一般情况下外部构建的操作如下:

mkdir build # 创建一个新文件夹
cd ./build  # 进入该文件夹路径(源代码目录在和build同级)
cmake ..    # 构建工程管理临时文件
make        # 编译
make install    # 安装编译好的工程到指定路径

所有的临时文件都放置的在 build 文件夹中,如果需要调整,直接将 build 删除即可。对于版本管理工具git来讲,可以直接在.gitignore文件中加入一行build/以屏蔽对 build 文件夹的版本控制。build 文件夹内生成的文件如下图所示。

CMake之Option使用简介_cmake option_奔跑的码仔的博客-CSDN博客
HELLO CMAKE-内部构建、外部构建 - 掘金

标签:cmake,简介,说明,编译,文件夹,构建,build,临时文件
From: https://www.cnblogs.com/sanguoasd/p/17498240.html

相关文章

  • nslookup返回信息说明
    先看一个示例: 如上图,我们把输出结果分成三部分,下面分别来描述: 第一部分:这里是我们本机的DNS服务器信息。客户机先到主DNSServer进行连接查询,结果发现异常,连接失败,于是出现了**can’tfindservernameforaddress*******:serverfailed这个提示;按照规则主DNS无法连接,会自动......
  • Mysql数据库简介
    由于之前文章已经初步了解过数据库的概念此处就不过多赘述了,直接进入本次主题,此次要介绍的是Mysql数据库,与之前介绍的Oracle数据库相比属于中型数据库,远远小于Oracle的容量体积(从软件的安装包大小就可看出),一个只要几百MB,一个却要好几个G。虽然安全性不如Oracle好,但Mysql相比Oracle......
  • 全网最细的CMake教程!(强烈建议收藏)——转载知乎
    全网最细的CMake教程!(强烈建议收藏)Linux嵌入式知乎原文网址——https://zhuanlan.zhihu.com/p/534439206  1,104人赞同了该文章​目录收起▌入门案例:单个源文件▌编写CMakeLists.txt▌编译项目▌多个源文件▌同一目......
  • LoadRunner 监控到的Linux服务器CPU的一些主要指标说明
    CPU的主要指标:CPUUtilizationCPU使用率,CPU的使用时间百分比,75%以上就比较高了。在任意时间内,CPU有7个状态:1.idle,表示CPU闲置并等待工作分配.2.user,表示CPU在运行用户的进程3.system,表示CPU在执行kernel工作4.nice,表示CPU花费在被nice改变过优先级的process......
  • 转:Quartz定时调度CronTrigger时间配置格式说明与实例
    转:https://www.iteye.com/blogs/tag/quartz Quartz定时调度CronTrigger时间配置格式说明与实例quartz工作SUN 1、CronTrigger时间格式配置说明CronTrigger配置格式:格式:[秒][分][小时][日][月][周][年]序号说明是否必填允许填写的值......
  • Three.js教程:Threejs常见几何体简介
    推荐:将NSDT场景编辑器加入你的3D工具链其他系列工具:NSDT简石数字孪生Threejs常见几何体简介Three.js提供的几何体API很多,本节课先给大家介绍几个比较简单的案例,为后面的学习打下基础。你可以结合threejs文档,把下面动手把下面几何体相关代码全部测试一遍,并预览3D效果。//BoxG......
  • TiDB简介与应用场景
    引言在当今互联网时代,数据的规模和复杂性不断增长,传统关系型数据库面临着无法满足高并发和大规模数据存储需求的挑战。为了解决这一问题,开源社区涌现出了一系列分布式数据库解决方案,其中TiDB作为一种新兴的分布式数据库引起了广泛的关注。本文将介绍TiDB的基本概念、特点以及适用......
  • mmseg4j 中文分词器的一些简介整理
    在lucene中,我们是使用IndexWriter调用Analyzer将文章切成以词为单位的Stream,然后生成索引的。lucene内建的分词器很多,比如:按空白字符分词的WhitespaceAnalyzer,添加了stopword过滤的StopAnalyzer,以及最常用的是StandardAnalyzer。这些自带的分词器对中文支持多不好,我觉得比......
  • Gradle简介
    gradle跟ant/maven一样,是一种依赖管理/自动化构建工具。但是跟ant/maven不一样,它并没有使用xml语言,而是采用了Groovy语言,这使得它更加简洁、灵活,更加强大的是,gradle完全兼容maven和ivy。基本配置build.gradle首先明确gradle跟maven一样,也有一个配置文件,maven里面是叫pom.xml,而在gra......
  • glctx.ClearColor 参数说明
    glctx.ClearColor的参数信息如下://ClearColorspecifiestheRGBAvaluesusedtoclearcolorbuffers.////http://www.khronos.org/opengles/sdk/docs/man3/html/glClearColor.xhtmlClearColor(red,green,blue,alphafloat32)这四个参数指定由glClear清除颜色缓存时所使......