【make, makefile, cmake, qmake 都是什么? 以及有何区别?】

跟着Cell学单细胞转录组分析(五):单细胞转录组marker基因鉴定及细胞群注释 书接上回(跟着Cell学单细胞转录组分析(四):单细胞转录组测序UMAP降维聚类)。完成数据降维和细胞聚类后,最主要的环节和工作就是确定各个细胞群,明确是什么类型的细胞,正群的细胞定群很关键,涉及到整个研究,所以这一步宁愿多费时间,也不要出错。当然,这也不是一蹴而就的,需要反复的确认。 要确定各个群是什么细胞,首先需要了解细胞群的marker基因,因为不同类型的细胞突出 表达的基因也是不同的。这里使用FindAllMarkers鉴定各个细胞群的高表达基因。 DefaultAssay(scedata) 阅读详情

作者:不学无术
链接:https://www.zhihu.com/question/27455963/answer/36722992
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

1. make 是用来执行Makefile的

2. Makefile是类unix环境下(比如Linux)的类似于批处理的"脚本"文件。其基本语法是: 目标+依赖+命令,只有在目标文件不存在,或目标比依赖的文件更旧,命令才会被执行。由此可见,Makefile和make可适用于任意工作,不限于编程。比如,可以用来管理latex。

3. Makefile+make可理解为类unix环境下的项目管理工具,但它太基础了,抽象程度不高,而且在windows下不太友好(针对visual studio用户),于是就有了跨平台项目管理工具cmake

4. cmake是跨平台项目管理工具,它用更抽象的语法来组织项目。虽然,仍然是目标,依赖之类的东西,但更为抽象和友好,比如你可用math表示数学库,而不需要再具体指定到底是math.dll还是libmath.so,在windows下它会支持生成visual studio的工程,在linux下它会生成Makefile,甚至它还能生成eclipse工程文件。也就是说,从同一个抽象规则出发,它为各个编译器定制工程文件。

5. cmake是抽象层次更高的项目管理工具,cmake命令执行的CMakeLists.txt文件

6. qmake是Qt专用的项目管理工具,对应的工程文件是*.pro,在Linux下面它也会生成Makefile,当然,在命令行下才会需要手动执行qmake,完全可以在qtcreator这个专用的IDE下面打开*.pro文件,使用qmake命令的繁琐细节不用你管了。

总结一下,make用来执行Makefile,cmake用来执行CMakeLists.txt,qmake用来处理*.pro工程文件。Makefile的抽象层次最低,cmake和qmake在Linux等环境下最后还是会生成一个Makefile。cmake和qmake支持跨平台,cmake的做法是生成指定编译器的工程文件,而qmake完全自成体系。

具体使用时,Linux下,小工程可手动写Makefile,大工程用automake来帮你生成Makefile,要想跨平台,就用cmake。如果GUI用了Qt,也可以用qmake+*.pro来管理工程,这也是跨平台的。当然,cmake中也有针对Qt的一些规则,并代替qmake帮你将qt相关的命令整理好了。

另外,需要指出的是,make和cmake主要命令只有一条,make用于处理Makefile,cmake用来转译CMakeLists.txt,而qmake是一个体系,用于支撑一个编程环境,它还包含除qmake之外的其它多条命令(比如uic,rcc,moc)。

上个简图,其中cl表示visual studio的编译器,gcc表示linux下的编译器

作者:知乎用户
链接:https://www.zhihu.com/question/27455963/answer/89770919
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

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这些一般它都能帮你弄好了,你只需要按一下那个三角形

12.接着是qmake,qmake是什么,先说一下Qt这个东西。Qt是跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。简单的说就是C++的第三方库,使用这个库你可以很容易生成windows,Linux,MAC os等等平台的图形界面。现在的Qt还包含了开发各种软件一般需要用到的功能模块(网络,数据库,XML,多线程啊等等),比你直接用C++(只带标准内裤那种)要方便和简单。

13.你可以用Qt简简单单就实现非常复杂的功能,是因为Qt对C++进行了扩展,你写一行代码,Qt在背后帮你写了几百上千行,而这些多出来的代码就是靠Qt专有的moc编译器(The Meta-Object Compiler)和uic编译器(User Interface Complier)来重新翻译你那一行代码。问题来了,你在进行程序编译前就必须先调用moc和uic对Qt源文件进行预处理,然后再调用编译器进行编译。上面说的那种普通makefile文件是不适用的,它没办法对qt源文件进行预处理。所以qmake就产生了。

14.qmake工具就是Qt公司制造出来,用来生成Qt 专用makefile文件,这种makefile文件就能自动智能调用moc和uic对源程序进行预处理和编译。qmake当然必须也是跨平台的,跟cmake一样能对应各种平台生成对应makefile文件。

15.qmake是根据Qt 工程文件(.pro)来生成对应的makefile的。工程文件(.pro)相对来说比较简单,一般工程你都可以自己手写,但是一般都是由Qt的开发环境 Qt Creator自动生成的,你还是只需要按下那个邪恶三角形就完事了。

16.还没有完,由于qmake很简单很好用又支持跨平台,而且是可以独立于它的IDE,所以你也可以用在非Qt工程上面,照样可以生成普通的makefile,只要在pro文件中加入CONFIG -= qt 就可以了。

17. 这样qmake和cmake有什么区别?

不好意思,cmake也是同样支持Qt程序的,cmake也能生成针对qt 程序的那种特殊makefile,

只是cmake的CMakeLists.txt 写起来相对与qmake的pro文件复杂点。

qmake 是为 Qt 量身打造的,使用起来非常方便,但是cmake功能比qmake强大。

一般的Qt工程你就直接使用qmake就可以了,cmake的强大功能一般人是用不到的。

当你的工程非常大的时候,又有qt部分的子工程,又有其他语言的部分子工程,据说用cmake会 方便,我也没试过。

【Qt】解决 FTH: (11284): *** Fault tolerant heap shim applied to current process. (亲测有效) 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers。容错堆垫片应用到当前的过程。这通常是由于以前的崩溃。win + r,输入regedit。 阅读详情

相关推荐

A类功率放大器

在A类放大器中,导通角是完整的360°或100%的输入信号,而在其他类别的放大器中,晶体管在一个较小的导通角内导通。通过在输出级使用两个互补的晶体管,其中一个晶体管是NPN或N通道类型,而另一个晶体管是PNP或P通道(互补)类型,以所谓的 "推挽 "配置连接,可以获得比A类放大器更大的功率输出和效率。这种类型的电路效率很低(低于30%),而且对直流电源的消耗很大,输出的功率却很小。由于我们感兴趣的是向负载提供最大的交流功率,同时从电源中消耗尽可能少的直流电,所以我们主要关注的是放大器的 "转换效率"。

LSW20072007的博客 2458

make和cmake区别

gcc是C语言编译器,而g++则是C++语言编译器,虽然gcc命令也可以用来编译C++语言的源码,但是它最终是要调用g++的。 make工具通过你提供的一个名为Makefile的文件,根据Makefile的内容来决定如何编译源文件。而关于make和cmake的区别, 你可以理解为make需要使用Makefile,而cmake是产生Makefile的工具。 qmake是Qt提供的一个编译工具,他可以...

yangwangxingkongcld的博客 2844

电脑蓝牙与ESP32蓝牙连接,让电脑发现ESP32

让PC发现ESP32蓝牙

injre! injre~ 5445

CMake和QMake

0x00 CMake和QMake简介 CMake和QMake用于使用简单平台和独立于编译器的配置文件来控制软件编译过程,并生成可在您选择的编译器环境中使用的本机makefile和工作区。 简单来说:CMake和QMake就是生成Makefile的自动化构建工具(Makefile文件是项目的代码管理工具,常用于C和C++代码的管理)。 0x01 Makefile文件介绍,摘抄自百度百科 一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指.

晓琴儿 8507

脑影像分析入门:如何用一般线性模型(GLM)处理fMRI数据?

本文为神经影像研究入门者详细解析了如何运用一般线性模型(GLM)处理fMRI数据。文章从GLM的核心原理出发,逐步拆解了从实验设计、构建稳健设计矩阵、模型估计与统计推断,到高阶分析及多重比较校正的全流程,并指出了常见陷阱与结果解读要点,是掌握fMRI数据分析基础的关键指南。

weixin_29091445的博客 397

Linux ARM平台开发系列讲解(GMSL摄像头篇)1.2 MAX9296 GMSL链路配置

串行器 +解串器组成,软件需要做的就是写这三部分的驱动,让摄像头数据能到达。3. 配置解串器和串行器的GMSL链路。串行器和解串器上电成功之后,就可以配置。软件配置(注意软件只可以配置速率,2. 9296上电,使能芯片。的版本和速率,比如版本是配置。配置成功之后,就会出现串行器。的链路,其它同类型的。设备地址,我设置的是。...

DSMGUOGUO的博客 1万+

CMake和Make之间的区别

本文翻译的是一篇英文文档,主要讲述的是CMake和Make之间的区别。下文中首先列出文章的中文翻译,然后紧接着的是英文原文。 下面是中文翻译部分:  编程人员已经使用CMake和Make很长一段时间了。当你加入一家大公司或者开始在一个具有大量代码的工程上开展工作时,你需要注意所有的构建。你需要看到处跳转的“CMakeLists.txt”文件。你应该会在终端使用”cmake”和”make”。很多人都

Forgive Me 5万+

QGC4.0.11界面修改

QGC4.0.11。

超维空间科技的博客 2462

七大顶尖 C++ 开源构建系统

Make 无处不在。但这也不难理解,Make 创建于1977 年,在计算机行业的影响深远。Make 广泛适用于所有类 Unix 系统、Macintosh 系统,以及 Windows 的所有版本中,可通过 Cygwin 或本地 nmake 执行。Make 使用简单的文本文件 makefiles 来指导构建。makefile 包含如下规则:规则包含 Target(目标)和 Recipe(命令)。Target 是文件名,在上面的例子中是 shownottell。分号分隔的是 Prerequisites(依赖文件

LearnLHC的博客 1726

基于STM32单片机设计的智能水温控制系统

本项目研究并实现了一种基于STM32单片机的智能水温控制系统。系统以STM32F103RCT6作为主控制器,通过DS18B20温度传感器实时采集水温数据,利用PID控制算法精确调节5V直流防水型70W加热棒的功率输出,确保水温恒定在设定范围内。此外,采用OLED显示屏显示当前水温和预设上限阀值,并集成ESP8266-WiFi模块与自研Android手机APP进行远程通信和控制。用户可通过本地按键或手机APP设置温度阀值,实现实时监控与智能化管理。整个系统设计旨在提高水资源利用效率,提升生活及工业用水环境的舒

8787

【思博伦】史上最详细Spirent TestCenter测试仪使用教程精讲(一)!图解超赞超详细!!!

3. 在弹出的界面中,找到菜单栏中的“Connect/Create”,选择下拉框中的“Connect to Physical/Visual Chassis”,在弹出的对话框中输入思博伦测试仪的IP地址:192.168.6.244,点击“OK”;说明:目前我们只需要使用到Raw Stream Block,不需要用到Bound Stream Block。说明:如果要使用100G模式,由于硬件限制,必须连续3个面板端口同时配置为100G使用。打开安装包,并按照提示按照即可。

风云说通信 6472

qt-- 编译工具-Qmake VS Cmake 对比讲解

简单的用qmake就够了,目前我用qmake就够了

code_snow的博客 552

杰理JL7033C芯片运行SoundFont音色库教程

本教程介绍如何在杰理JL7033C芯片上移植TinySoundFont音色库,实现MIDI播放功能。关键步骤包括:获取TinySoundFont开源代码,创建音色库声音播放数据流,封装核心功能文件。硬件需配备外部PSRAM和NOR FLASH存储音色库,软件使用杰理SDK和工具链。移植后系统可支持40个voice,满足MIDI播放和电子琴演奏需求。教程详细说明了代码移植过程,包括音色库文件处理、内存配置和音频流水线设置。

qq_42014563的博客 610

make, makefile, cmake, qmake 有何区别?

make, makefile, cmake, qmake 有何区别

chencichang的博客 8658

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

make, makefile, cmake, qmake 都是什么? 以及有何区别?

make, makefile, cmake, qmake 都是什么? 以及有何区别?

weixin_53090658的博客 1145

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

make makefile cmake qmake都是什么,有什么区别

列表一: 1.gcc是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器,它可以编译很多种编程语言(括C、C++、Objective-C、Fortran、Java等等)。 2.当你的程序只有一个源文件时,直接就可以用gcc命令编译它。 3.但是当你的程序包含很多个源文件时,用gcc命令逐个去编译时,你就很容易混乱而且工作量大 4.所以出现了make工具 make工具可以看成是一个智能的批处理工具,它本身并没有编译和链接的功能,而是用类似于批处理的方式—通过调用m

君君的博客 5757

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Make、Makefile、Cmake、QMake 的区别

简介: make makefile cmake qmake都是什么,有什么区别? 文章目录本博文的简述or解决问题?重要提示:答一(比较写的好):答二(图很好):参考博文:本篇同步博文: 本博文的简述or解决问题? ​ make makefile cmake qmake都是什么,有什么区别? ​ 查了一下好像是编译用的,既然是编译为什么我们不用g++ ja...

7546

make/Makefile/cmake/qmake/nmake/区别与介绍

gcc gcc是GNU Compiler Collection(GNU编译器集合),GCC是所谓的“ GNU工具链”的关键组件,用于开发应用程序和编写操作系统),可以简单认为是编译器,它可以编译很多种编程语言C ++(g++),Objective-C,Objective-C ++,Java(gcj),Fortran(gfortran),Ada(gnat),Go(gccgo),OpenMP,Cilk Plus和OpenAcc 母网站http://gcc.gnu.org/ gcc编译过程 用gcc编

One of thre_tigers的博客 7651

Makefile和Cmake的区别和联系

lkkk

Kunfly的博客 1万+

make makefile cmake qmake都是什么,有什么区别?

本文转载自知乎,链接和作者信息如下。作者:辉常哥链接:https://www.zhihu.com/question/27455963/answer/89770919来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。经常记不住这几个概念,都看了几次了还是容易忘,为以后方面查阅,故而从知乎上复制粘贴过来。1、gcc是GNU Compiler Collection(就是GNU...

dd_hello的博客 1742

一文搞懂 make、Makefile、CMake、qmake:编译工具全家桶解析

工具优点缺点使用场景make简单、直接、底层控制跨平台差、复杂项目难维护小型项目、单平台开发cmake跨平台、模块化、扩展性强学习曲线高、语法复杂大型、多模块、多语言项目qmake简单、自动处理 Qt 特性限于 Qt 项目Qt GUI 或控制台应用、跨平台 Qt 项目。

欢迎来到jiantaoyab博客 1618

make、makefile、cmake之间的区别与联系

make、makefile、cmake之间的区别与联系 首先说明一下make、makefile、cmake存在的原因 在进行编译时,如果程序只有一个源文件,那么我们可以直接利用gcc命令对其进行编译; 但是,如果程序包含多个源文件的话,用gcc命令对源文件进行逐个编译显然会比较繁琐。尤其是在有大量源文件时,这样繁琐的编译工作很容易会导致混乱; 为了使多个源文件的编译工作更加便捷,就出现了make...

Aiyanghong的博客 6680

make-makefile cmake nmake qmake的区别联系

make makefile cmake qmake都是什么,有什么区别? 2018年06月06日 21:37:59dd_hello阅读数 400 本文转载自知乎,链接和作者信息如下。 作者:辉常哥 链接:https://www.zhihu.com/question/27455963/answer/89770919 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明...

行知致简的专栏 784

make makefile cmake qmake 区别

原文:https://www.zhihu.com/question/27455963 作者:玟清 链接:https://www.zhihu.com/question/27455963/answer/36722992 来源:知乎 著作权归作者所有,转载请联系作者获得授权。 作者:玟清 链接:https://www.zhihu.com/question/27455963/answer/36722992...

vXueYing的博客 709
上一篇: 学习cmake chapter1-recipe3
下一篇: linux基础
qijitao
博客等级 码龄18年 165粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值