编译构建工具
MinGW简介
MinGW(Minimalist GNU for Windows) 是一个用于 Windows 平台的开发工具集,它提供了一组 GNU 工具和库,包括gcc、g++等,可以用于编译和构建本地的 Windows 应用程序。MinGW 的目标是在 Windows 环境下提供类似于 Unix/Linux 环境下的开发工具,使开发者能够轻松地在 Windows 上编写和编译 C、C++ 等程序。
GCC简介
GCC(GNU Compiler Collection)即GNU编译器套件,属于一种编程语言编译器,其原名为GCC(GNU C Compiler)即GNU c语言编译器,虽然缩写一样但是功能上区别很大。GCC的初衷是为GNU操作系统专门编写的一款编译器,原本的GNU是专用于编译C代码,现如今已扩展为可以编译C、C++、Java、Objective-C等多种编程语言的编译器集合了。
G++简介
G++是GCC的C++编译器部分,专门用于编译C++代码。与GCC相比,G++默认启用C++特性,比如支持C++标准库和面向对象编程。
GCC和G++的区别

GNU Binutils简介
https://sourceware.org/binutils/


Make简介
Make 是一个构建自动化工具,用于根据代码文件的依赖关系来自动执行编译和构建任务。它通过Makefile文件定义哪些文件需要编译、如何编译,以及如何链接生成最终的可执行文件。
Ninja简介
Ninja 是一个超快速构建系统,专为处理大型项目和更复杂的依赖关系而设计,侧重于高效和并行构建。Ninja 诞生的目的是替代 Make,在执行速度和并行构建方面表现优异。
Make和Ninja的区别
Make适合小型和中型项目,以及那些需要简单构建过程的项目。Makefile 更加直观,易于手动编写和修改。
Ninja适合大型项目或需要频繁构建的项目,尤其是注重构建速度的项目。由于 Ninja 的配置文件复杂且不易手写,通常配合像 CMake 这样的工具使用。
Cmake简介
CMake 是一个高级的构建工具,用于生成适合各种平台的构建文件(如 Makefile、Ninja、Visual Studio 工程等)。CMake 的主要作用是为复杂项目生成构建系统,并解决跨平台构建的难题。
我的简单理解,一般使用cmake生成Makefile或Ninja构建文件,然后使用Make或Ninja进行构建。
GCC和Make区别
GCC 是一个编译器工具,用于将单个源文件编译成目标文件,并将目标文件链接为可执行文件。
Make 是一个自动化构建工具,通过调用 GCC 等编译器来完成编译和链接工作。它主要用于管理大型项目的依赖关系,自动化构建流程,避免手动执行多次编译命令。
工具安装
MinGW安装
MinGW工具官网:https://sourceforge.net/projects/mingw-w64/files/
# 工具下载链接在README.rst.old文件里
MinGW-W64 Online Installer
====================
* `MinGW-W64-install.exe <https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/installer/mingw-w64-install.exe>`_
MinGW-W64 GCC-8.1.0
====================
* `x86_64-posix-sjlj <https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-posix/sjlj/x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0.7z>`_
* `x86_64-posix-seh <https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-posix/seh/x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z>`_
* `x86_64-win32-sjlj <https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-win32/sjlj/x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0.7z>`_
* `x86_64-win32-seh <https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-win32/seh/x86_64-8.1.0-release-win32-seh-rt_v6-rev0.7z>`_
* `i686-posix-sjlj <https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/8.1.0/threads-posix/sjlj/i686-8.1.0-release-posix-sjlj-rt_v6-rev0.7z>`_
* `i686-posix-dwarf <https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/8.1.0/threads-posix/dwarf/i686-8.1.0-release-posix-dwarf-rt_v6-rev0.7z>`_
* `i686-win32-sjlj <https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/8.1.0/threads-win32/sjlj/i686-8.1.0-release-win32-sjlj-rt_v6-rev0.7z>`_
* `i686-win32-dwarf <https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/8.1.0/threads-win32/dwarf/i686-8.1.0-release-win32-dwarf-rt_v6-rev0.7z>`_
解压后放到目录C:\Program Files\mingw64\bin,并将该目录添加到系统环境变量,打开cmd窗口执行gcc --version看到版本信息即说明安装完成。
路径C:\Program Files\mingw64\bin包含mingw32-make.exe文件,将其改名为make.exe文件,便于使用。
Cmake安装
Windows下CMake的下载与安装详解_cmake下载-优快云博客
Linux安装
使用apt进行安装
sudo apt install gcc
sudo apt install g++
C++代码编译构建
编译单个C++源文件
main.cpp代码如下:
#include <iostream>
using namespace std;
int main() {
cout << "Hello, World!" << endl;
return 0;
}
使用g++进行编译:
g++ -o main main.cpp
使用gcc进行编译:
gcc -o main main.cpp -lstdc++
注:使用gcc编译C++文件,需要显式链接C++标准库,否则会编译报错。
编译简单C++工程
C++工程源文件结构如下:
my_project/
├── main.cpp
└── MyClass.cpp
└── MyClass.h
使用g++进行编译:
g++ -o my_program main.cpp MyClass.cpp
使用Cmake构建复杂工程
对于复杂的C++工程,可以使用cmake和make进行构建。
示例项目源文件结构如下:
CppCmakeProject
├── application
│ ├── inc
│ │ └── function.h
│ └── src
│ ├── function.cpp
│ └── main.cpp
└── CMakeLists.txt
其中,./CMakeLists.txt内容如下:
# 设置最低的 CMake 版本
cmake_minimum_required(VERSION 3.10)
# 设置项目名称和版本
project(CppCmakeProject)
# 设置 C++ 标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
# 添加头文件搜索路径
include_directories(${CMAKE_SOURCE_DIR}/application/inc)
# 获取源文件列表(list)
file(GLOB_RECURSE SOURCE_LIST "${CMAKE_SOURCE_DIR}/application/*.cpp")
# 创建可执行文件
add_executable(main ${SOURCE_LIST})
编译构建步骤如下:
1. 在项目根目录下,创建一个构建目录(通常称为 `build`):
-
mkdir build cd build2. 在构建的build目录中运行 CMake,指定上级目录作为源目录:
cmake ..
3. 使用 `make` 命令构建项目:
make
4. 构建完成后,可以运行生成的可执行文件:
./main
参考文献
MinGW-w64的安装详细步骤(c/c++的编译器gcc、g++的windows版,win10、win11真实可用)-优快云博客
MinGW-W64 下载、安装与配置(支持最新版的GCC,目前 GCC 13.2.0)-优快云博客
浅显易懂的GCC使用教程——初级篇_gcc -ddebug-优快云博客
GCC是什么? gcc与g++的区别 具体编译细节_gcc g++-优快云博客
【Linux c++实战】手把手教你在linux上从零搭建c++项目,并详细介绍Cmake(C++|Cmake|Ubuntu)-优快云博客
关于项目编译工具ninja、make、cmake的区别与优劣_ninja make-优快云博客
一文读懂ninja构建系统 - 知乎 (zhihu.com)
Make 命令教程 - 阮一峰的网络日志 (ruanyifeng.com)
Linux下CMake简明教程_linux cmake-优快云博客
https://subingwen.cn/cmake/CMake-primer/
https://subingwen.cn/cmake/CMake-advanced/
如何使用CMake构建c++项目 - 知乎 (zhihu.com)
2980

被折叠的 条评论
为什么被折叠?



