g++,make ,cmake的一些区别

本文介绍了编程中从源代码到可执行文件的整个过程,包括使用make和cmake工具简化大型项目的编译工作。通过makefile和cmakelist文件设置规则,实现自动化编译。

大家都知道,写程序大体步骤为:

1.用编辑器编写源代码,如.c文件。

2.用编译器编译代码生成目标文件,如.o。

3.用链接器连接目标代码生成可执行文件,如.exe。

但如果源文件太多,一个一个编译时就会特别麻烦,于是人们想到,为什么不设计一种类似批处理的程序,来批处理编译源文件呢,于是就有了make工具,它是一个自动化编译工具,你可以使用一条命令实现完全编译。但是你需要编写一个规则文件,make依据它来批处理编译,这个文件就是makefile,所以编写makefile文件也是一个程序员所必备的技能。

对于一个大工程,编写makefile实在是件复杂的事,于是人们又想,为什么不设计一个工具,读入所有源文件之后,自动生成makefile呢,于是就出现了cmake工具,它能够输出各种各样的makefile或者project文件,从而帮助程序员减轻负担。但是随之而来也就是编写cmakelist文件,它是cmake所依据的规则。所以在编程的世界里没有捷径可走,还是要脚踏实地的。

原文件--camkelist ---cmake ---makefile ---make ---生成可执行文件


### 功能介绍与区别对比 #### GCC 与 G++ GCC(GNU Compiler Collection)是一个支持多种编程语言的编译器集合,包括 C、C++、Java、Fortran、Pascal、Objective-C 和 Ada 等。它不仅是一个编译器,还提供预处理、汇编和链接等完整编译流程的支持。其中,`gcc` 是 GCC 中用于编译 C 语言的工具,而 `g++` 是用于编译 C++ 语言的工具。虽然两者都属于 GCC,但它们在处理 C++ 代码时有显著区别。例如,`g++` 在编译 C++ 文件时会自动链接标准模板库(STL),而 `gcc` 不会,因此在使用 `gcc` 编译 C++ 程序时需要手动添加 `-lstdc++` 参数以链接 STL 库 [^4]。 #### MakeCMake `make` 是一个用于自动化构建项目的工具,它通过读取名为 `Makefile` 的文件来执行编译任务。`Makefile` 类似于乐谱,定义了如何编译和链接各个源文件,以及它们之间的依赖关系。`make` 工具根据这些规则依次执行编译命令,从而高效地构建项目 [^2]。 `CMake` 则是一个跨平台的构建系统生成器,它的主要功能是生成适用于不同平台的构建配置文件(如 `Makefile` 或 Visual Studio 项目文件)。与 `make` 相比,`CMake` 提供了更高层次的抽象,使得开发者可以通过简单的配置文件(通常是 `CMakeLists.txt`)来描述项目的构建逻辑,而无需关心底层的具体编译器或平台细节 [^1]。 #### GCC/G++ 与 Make区别 `gcc` 和 `g++` 是具体的编译器,负责将源代码转换为目标代码。而 `make` 是一个构建工具,它并不直接参与编译过程,而是通过解析 `Makefile` 文件中的规则来调用 `gcc` 或 `g++` 进行编译。`make` 的优势在于它能够智能地判断哪些文件已经修改,从而只重新编译受影响的部分,提高构建效率 。 #### MakeCMake区别 `make` 本身不具有跨平台能力,其 `Makefile` 文件通常需要针对特定平台进行调整。相比之下,`CMake` 可以生成适用于多种平台的构建文件,例如在 Linux 上生成 `Makefile`,在 Windows 上生成 Visual Studio 项目文件。这种灵活性使得 `CMake` 成为大型跨平台项目常用的构建工具 [^1]。 #### 示例代码 以下是一个简单的 `CMakeLists.txt` 文件示例,展示了如何使用 `CMake` 来配置一个 C++ 项目的构建过程: ```cmake cmake_minimum_required(VERSION 3.10) project(MyProject) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED True) add_executable(MyExecutable main.cpp) ``` 在这个例子中,`CMakeLists.txt` 定义了一个最小的 CMake 版本要求,项目名称,C++ 标准版本,并指定了要生成的可执行文件及其对应的源文件 。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值