gcc make 与cmake
1. gcc
(1)是什么?
它是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器。它可以编译很多种编程语言(括C、C++、Objective-C、Fortran、Java等等)。
(2)怎么用?
当你的程序只有一个源文件时,直接就可以用gcc命令编译它。
(3)极限与困境。
如果你的程序包含很多个源文件时,用gcc命令逐个去编译时,你就很容易混乱而且工作量大。
这时你需要召唤make了。
2. make
(1)是什么?
make工具可以看成是一个智能的批处理工具,它本身并没有编译和链接的功能,而是用类似于批处理的方式—通过调用makefile文件中用户指定的命令来进行编译和链接的。
makefile是什么?makefile是一个文件,记录了一堆调用gcc(也可以是别的编译器)去编译某个源文件的命令。
(2)怎么用?
简单的说,makefile就像一首歌的乐谱,make工具就像指挥家,指挥家根据乐谱makefile指挥整个乐团怎么样演奏,make工具就根据makefile中的命令进行编译和链接的。
当项目工程比较简单时,完全可以人工编写makefile。
(3)极限与困境。
但是当工程非常大的时候,手写makefile是非常麻烦的、甚至不可能的事情,如果换了个平台makefile又要重新修改。
这时你需要召唤cmake了。
3. cmake
(1)是什么?
cmake可以更加简单的生成makefile文件给上面那个make用。当然cmake还有其他功能,就是可以跨平台生成对应平台能用的makefile,你不用再自己去修改了。
(2)怎么用?
cmake根据什么生成makefile呢?它又要根据一个叫CMakeLists.txt文件(学名:组态档)去生成makefile。
(3)CMakeLists.txt文件谁写啊?
亲,是你自己手写的。
当然如果你用IDE,类似VS这些一般它都能帮你弄好了,你只需要按一下那个三角形。
4. 个人建议
对于有野心的初学者,强烈建议不直接使用IDE。IDE屏蔽了太多细节,会阻止你成为一个视野开阔的开发者。
5. 参考
- 本文引用了一篇知乎问答,调整了表达方式:GCC 和 cmake的关系?
gcc make 与cmake的更多相关文章
- GCC G++ Make CMake自我科普
Linux下gcc g++ make cmake 联系和区别 C/C++程序从编写到可执行一般经历这几个阶段 编写源代码 编译器编译代码生成目标文件,如.o文件 链接器链接目标文件和其他目标文件/库文 ...
- gcc/g++/make/cmake/makefile/cmakelists的恩恩怨怨
以前在windows下用VS写代码,不管有多少个文件夹,有多少个文件,写完以后只需要一键就什么都搞定了.但是当移步linux下时,除非你使用图形界面,并且使用Qt creater这类的IDE时,才可以 ...
- CentOS 6.x安装多GCC版本号,cmake的安装与使用
操作系统:CentOS release 6.5 (Final) 当前gcc版本号:build=x86_64-redhat-linux Thread ...
- 安装 Qt 及所需 gcc 等
嫌麻烦,下载离线安装包一次性装好 Qt 及 Qt Creator (Community) Qt 安装包下载地址 http://download.qt.io/official_releases/qt/ ...
- cmake 及make 实践记录
DEBIAN操作系统 预备操作: 安装 gcc g++ make cmake 开启Terminal 切换到超级用户 下载安装上述软件 A@debian:~$ su Password: root@deb ...
- grpc使用记录(一) gRPC编译(mscv/gcc)
目录 1.编译前的准备工作 2.Windows下使用VS2019编译 2.1.使用cmake生成VS2019解决方案 2.2.使用msbuild工具进行编译 3.linux下编译 3.1 CentO ...
- mysql 5.6.24安装实例
安装前准备工作: 1)编辑PATH路径 vim /etc/profile PATH=/home/mysql/bin:/home/mysql/lib:$PATH export PATH 2)生效PATH ...
- 编译安装zabbix3.2
1.1 环境准备 系统环境准备:redhat 6.6 64位mysql-5.6.34php-5.6.28zabbix-3.2.1配置前先关闭iptables和SELINUX,避免安装过程中报错. # ...
- percona5.7 源码安装
200 ? "200px" : this.width)!important;} --> 介绍 主要为了测试percona的线程池的性能,这里就简单介绍一下percona5.7 ...
随机推荐
- 使用openssl命令制作ecc证书
# openssl ecparam -out EccCA.key -name prime256v1 -genkey # openssl req -config openssl.cnf -key Ecc ...
- js 常用的工具函数
1 类型判断 isString (o) { //是否字符串 return Object.prototype.toString.call(o).slice(8, -1) === 'String' } i ...
- Git系列②之部署企业级开源仓库gitlab服务器
Git系列②之部署企业级开源仓库gitlab服务器 上一篇我们介绍了github的常见使用方法,下面开始部署本地开源仓库gitlab GitLab 是一个用于仓库管理系统的开源项目. 1.安装配置gi ...
- 最新sublime text 3 注册码license分享(亲测有效)
—– BEGIN LICENSE —– TwitterInc 200 User License EA7E-890007 1D77F72E 390CDD93 4DCBA022 FAF60790 61AA ...
- Android获取本机号码及运营商
import android.content.Context; import android.telephony.TelephonyManager; import android.util.Log; ...
- Shiro配置URL过滤
常用过滤器: anon 不需要认证 authc 需要认证 user 验证通过或RememberMe登录的都可以 URL说明: /admin?=authc 表示 ...
- Windows&Word 常用快捷键
Win:显示开始菜单 Win + E:打开文件管理器 Win + D:显示桌面 Win + L:锁定计算机 Win + I:打开设置 Win + M:最小化所有窗口 Alt + F4:1.用来关闭当前 ...
- SQL Server管理员必备技能之性能优化
SQL Server管理员必备技能之性能优化 高文龙关注1人评论1171人阅读2017-09-22 08:27:41 SQL Server 作为企业必不可少的服务之一,所以对于管理员的日常运维是一个极 ...
- 疯狂Workflow讲义——基于Activiti的工作流应用开 PDF 下载
<疯狂Workflow讲义--基于Activiti的工作流应用开> 一:文档获取下载方式: 1:花20CSDN积分:可以下载:http://download.csdn.net/downlo ...
- Confluence 6 SQL Server 输入你的数据库细节
Confluence 的安装向导将会指导你一步一步的在 Confluence 中配置安装 SQL Server 数据库. 使用 JDBC 连接(默认) JDBC 是推荐的连接你的 Confluence ...