【工具】Cmake与gcc的关系

1.gcc是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器,它可以编译很多种编程语言(括C、C++、Objective-C、Fortran、Java等等)。

2.当你的程序只有一个源文件时,直接就可以用gcc命令编译它。

3.但是当你的程序包含很多个源文件时,用gcc命令逐个去编译时,你就很容易混乱而且工作量大

4.所以出现了make工具,make工具可以看成是一个智能的批处理工具,它本身并没有编译和链接的功能,而是用类似于批处理的方式—通过调用makefile文件中用户指定的命令来进行编译和链接的。

5.makefile是什么?简单的说就像一首歌的乐谱,make工具就像指挥家,指挥家根据乐谱指挥整个乐团怎么样演奏,make工具就根据makefile中的命令进行编译和链接的。

6.makefile命令中就包含了调用gcc(也可以是别的编译器)去编译某个源文件的命令。

7.makefile在一些简单的工程完全可以人工手下,但是当工程非常大的时候,手写makefile也是非常麻烦的,如果换了个平台makefile又要重新修改。

8.这时候就出现了Cmake这个工具,cmake就可以更加简单的生成makefile文件给上面那个make用。当然cmake还有其他功能,就是可以跨平台生成对应平台能用的makefile,你不用再自己去修改了。

9.可是cmake根据什么生成makefile呢?它又要根据一个叫CMakeLists.txt文件(学名:组态档)去生成makefile。

10.到最后CMakeLists.txt文件谁写啊?亲,是你自己手写的。

11.当然如果你用IDE,类似VS这些一般它都能帮你弄好了,你只需要按一下那个三角形

CMake ---------> makefile (包含调用gcc的命令)------------> make工具 ---------------> 编译链接源文件

CMake 根据CMakeLists.txt生成乐谱(makefiles) make工具根据乐谱对过个源文件进行 编译和链接即可。

时间: 2024-10-26 08:12:29

【工具】Cmake与gcc的关系的相关文章

GNU开发工具——CMake快速入门

GNU开发工具--CMake快速入门 一.CMake简介 不同Make工具,如GNU Make.QT的qmake.微软的MS nmake.BSD Make(pmake)等,遵循着不同的规范和标准,所执行的Makefile格式也不同.如果软件想跨平台,必须要保证能够在不同平台编译.而如果使用Make工具,必须为不同的Make工具编写不同的Makefile.CMake是一个比Make工具更高级的编译配置工具,是一个跨平台的.开源的构建系统(BuildSystem).CMake允许开发者编写一种平台无

GNU开发工具——CMake进阶

GNU开发工具--CMake进阶 一.CMake基础指令 1.cmake_minimum_required cmake_minimum_required (VERSION 2.8)cmake_minimum_required用于规定cmake程序的最低版本,可选.如果CMakeLists.txt文件中使用了高版本cmake特有的一些命令时,就需要使用cmake_minimum_required对CMake进行版本限制,提醒用户升级到相应版本后再执行cmake. 2.project project

win10下VSCode+CMake+Clang+GCC环境搭建

win10下VSCode+CMake+Clang+GCC环境搭建 win10下VSCode+CMake+Clang+GCC环境搭建 安装软件 VSCode插件安装 新建文件夹, 开始撸代码 main.cpp CMakeList.txt 配置 c_cpp_properties.json 配置调试文件 launch.json 配置CMake 编译和调试 打算用C/C++把基本的数据结构与算法实现一遍, 为考研做准备, 因为只是想实现算法和数据结构, 就不太想用VisualStudio, 感觉VSCo

报表工具与报表性能的关系

在选择报表工具时,性能指标一向是用户非常关心的,但是,报表工具的性能和整个报表系统的性能会有多大关系呢? 要回答这个问题,首先要分析一下报表的处理过程包含哪些环节,其中有哪些环节容易出现性能问题,如何优化这些环节. 一.报表处理的一般过程分析 1.用户选择报表输入参数后,报表引擎会根据报表模板和输入参数来解析报表,并将数据计算和读取请求以SQL的方式发送给数据库. 2.数据层负责读取.计算和返回数据.数据层一般都是传统关系数据库:如Oracle.DB2等. 3.数据层通过JDBC等接口将结果数据

GNU开发工具——CMake工程实践

GNU开发工具--CMake工程实践 一.CMake构建Qt工程 1.Qt工程源码 创建Migration目录,在目录下创建main.cpp文件: #include <QApplication> #include <QLabel> int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel label(QString("Hello Qt%1!").arg(int(QT_VERSI

GNU开发工具——CMake模块

GNU开发工具--CMake模块 一.find_packge高级功能 1.find_package的模式 find_package()有Module模式(基本用法)和Config模式(完全用法),其中Module模式是基础,Config模式则提供复杂高级功能.find_package是否使用Config模式可以通过下列条件判断:(1)find_package()中指定CONFIG关键字(2)find_package()中指定NO_MODULE关键字(3)find_package()中使用了不再M

自动make工具--CMake

http://www.cnblogs.com/lyq105/archive/2010/12/03/1895067.html http://www.linuxidc.com/Linux/2015-10/124447.htm CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake.只是 CMake 的组态档取名为 CmakeLists.tx

cmake给gcc添加编译前缀

一般在Linux的环境中编译程序用的都是gcc,举个最简单的例子:gcc a.c,当执行该条命令时就会产生a.out的可执行文件.但如果我们想改变gcc的行为,而不重新生成一个新的gcc,我们可以怎么做呢?是的,我们可以用命令将其进行包裹,比如:lltwrapper gcc.其中,lltwrapper可以是一个脚本,也可以是一个二进制的可执行程序,其作用是用来改变gcc的行为,从而达到插桩或改变编译流程的目的. 如果直接在终端进行编译,那么很好解决,直接在gcc的前面加上相应的命令即可.可是现在

Ubuntu下cc和gcc的关系

在编写makefile时找到过很多例子,其中有一些用的bash是cc,而有的则是gcc,然后就去查阅了一些相关资料.原来cc是Unix下的c编译器,而gcc则是Linux下的编译器.那么问题来了,在Linux下均存在这两个编译器吗?其实不然,在Linux下cc和gcc都是指gcc这个c编译器的.下面我们来查看以下吧. which cc 输出: /usr/bin/cc 列出详细信息 ls -al /usr/bin/cc 输出: lrwxrwxrwx 1 root root 20 4月 6 23:0