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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

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

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

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


### 配置 g++ 编译器与 cmake 工具 #### 安装必要的软件包 为了在 Linux 上配置 `g++` 编译器以及 `cmake` 构建工具,需要先安装这些组件。可以通过系统的包管理器来完成这一操作。 对于基于 Debian 的发行版(如 Ubuntu),可以使用如下命令: ```bash sudo apt update && sudo apt install build-essential cmake ``` 这会更新本地的包列表并安装一系列用于编译 C/C++ 程序所需的工具链,其中包括 GNU Compiler Collection (GCC),它包含了 `g++` 编译器[^1]。 #### 创建简单的 CMake 项目结构 建立一个基本的文件夹结构有助于更好地管理和构建项目。假设项目的根目录名为 `my_project`: ``` my_project/ ├── CMakeLists.txt └── src/ └── main.cpp ``` 其中 `main.cpp` 是源代码文件的位置,而 `CMakeLists.txt` 则是用来定义如何构建这个项目的脚本文件[^3]。 #### 编写 CMake 脚本 编辑位于项目根目录下的 `CMakeLists.txt` 文件,在里面指定最低版本需求、设置可执行目标等信息: ```cmake cmake_minimum_required(VERSION 3.10) project(MyProject VERSION 1.0 LANGUAGES CXX) add_executable(${PROJECT_NAME} src/main.cpp) ``` 这段脚本指定了使用的最小 CMake 版本为 3.10,并声明了一个名为 MyProject 的新工程,最后添加了一个由单个 `.cpp` 文件组成的可执行程序目标。 #### 使用 CMake 进行构建 进入项目所在的终端窗口,创建一个新的子目录用来放置生成的结果文件,通常命名为 `build` 或者 `_builds` : ```bash mkdir -p my_project/build && cd my_project/build ``` 接着运行下面这条指令让 CMake 处理顶层的 `CMakeLists.txt` 并生成相应的 Makefile 及其他辅助文件: ```bash cmake .. ``` 一旦成功完成了上述过程,则可通过调用 make 来实际编译整个工程项目: ```bash make ``` 如果一切顺利的话,现在应该可以在当前工作区找到刚刚被创建出来的二进制文件了。 #### 测试 OpenSSL 开发环境 当涉及到特定库的支持时,例如 OpenSSL 库,还需要额外确认其可用性和正确链接方式。这里给出一段测试性的例子展示怎样编写能够利用到 OpenSSL 功能的应用程序片段[^2]: ```cpp #include <iostream> #include <openssl/evp.h> #include <openssl/rand.h> int main() { std::cout << "OpenSSL C++ Development Environment is set up!" << std::endl; return 0; } ``` 要使此代码正常运作,可能需进一步调整 CMake 设置以确保能正确查找和连接至 OpenSSL 库资源。具体方法取决于所处的操作系统及其预设路径情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值