C++ 学习记录:make cmake的关系

C++ 学习记录:make cmake的关系

  • make
  • cmake
  • ./configure 、make、cmake、make install的作用和区别

make

make 使用于编译链接程序
依赖 Makefile 文件
可以是手动 g++ 挨个执行,但由于每次手动太麻烦,所以有了Makefile。(类似于makeflow、nextflow、WDL等流语言)

手动过程

# 编译 链接
g++ main.cpp hello.cpp -o main

# 只编译,不链接
g++ main.cpp -c      # => main.o
g++ hello.cpp -c     # => hello.o
# 链接到一起
g++ *.o -o mian

演化过程
在这里插入图片描述
C++ 学习记录:make cmake的关系_第1张图片
C++ 学习记录:make cmake的关系_第2张图片
C++ 学习记录:make cmake的关系_第3张图片

cmake

需要 CMakeLists.txt 文件支持。
由于手动写Makefile 太过于繁琐,所以,使用cmake 来生成 Makefile(内容很多)。再用make 来编译

CMakeLists.txt 示例
C++ 学习记录:make cmake的关系_第4张图片
执行 cmake <路径>

C++ 学习记录:make cmake的关系_第5张图片

./configure 、make、cmake、make install的作用和区别

./configure:这是一个脚本或可执行文件,用于配置软件的编译选项。通过运行./configure命令,它会检查系统环境、依赖项和支持的功能,并生成一个适用于当前系统的Makefile文件。这个Makefile文件会包含编译软件所需的参数和配置选项。

make:这是一个构建工具,读取Makefile文件并自动执行编译过程。通过运行make命令,它会根据Makefile文件中的规则和目标来编译源代码,生成可执行文件或库文件。make会根据源代码的依赖关系,只重新编译已更改的源文件,以提高编译效率。

cmake:这是一个跨平台的构建工具,用于生成适用于不同编译系统的Makefile或项目文件。相比于手动编写Makefile文件,cmake提供了更简洁和可读性更高的配置文件(CMakeLists.txt)。通过运行cmake命令,它会根据配置文件生成Makefile或其他构建工具所需的文件,并根据系统环境进行适当的设置。

make install:这是make命令的一个规则(target),用于将编译后的文件复制到指定的安装目录。通过运行make install命令,它会根据Makefile文件中的安装规则,将可执行文件、库文件和其他必要资源复制到系统中的标准位置(通常是/usr/local),以便在系统中全局使用。

区别:

./configure是配置软件的选项,根据系统环境和依赖项生成适用于当前系统的Makefile。
make是构建工具,读取Makefile文件并根据规则和目标来编译源代码。
cmake是更高级的构建工具,它生成适用于不同编译系统的Makefile或项目文件。
make install是make命令的一个规则,用于将编译后的文件复制到指定的安装目录。
在编译和安装软件时,通常的流程是先运行./configure配置软件,然后运行make进行编译,最后使用make install将编译后的文件安装到指定的位置。而cmake则是在某些情况下代替configure的更先进的构建工具。

参考
https://www.bilibili.com/video/BV188411L7d2/?spm_id_from=333.337.search-card.all.click&vd_source=53b1db6c36e2dfacbed03db3d7490a2c

你可能感兴趣的:(C++,c++)