CMake和make的理解

打印 上一主题 下一主题

主题 1779|帖子 1779|积分 5337

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
cmake 和 make 是在 C/C++ 项目构建过程中常用的工具,它们通常配合使用来完成从源代码到可执行文件的编译过程,下面为你详细介绍它们的执行过程。
  cmake 执行过程

  cmake 是一个跨平台的构建工具,它使用 CMakeLists.txt 文件来形貌项目的构建过程,终极生成得当特定平台和编译器的构建文件(如 Makefile、Visual Studio 项目文件等)。其执行过程如下:
  1. 读取 CMakeLists.txt 文件

  cmake 会从指定的源目录(通常是项目根目录)中读取 CMakeLists.txt 文件。该文件包含了项目的配置信息,例如项目名称、源文件列表、依赖库、编译选项等。
  2. 剖析配置信息

  cmake 会逐行剖析 CMakeLists.txt 中的下令和指令,根据这些信息来确定项目的构建规则。在剖析过程中,cmake 会查找所需的依赖项,例如其他库文件、头文件目录等。如果依赖项缺失,大概会导致配置失败。
  3. 生成构建文件

  根据剖析得到的配置信息和当前平台的特性,cmake 会生成相应的构建文件。在 Unix-like 系统中,通常生成的是 Makefile;在 Windows 系统中,大概生成 Visual Studio 项目文件。生成的构建文件会被放置在指定的构建目录中。
  4. 配置完成

  当 cmake 乐成生成构建文件后,会输出配置完成的信息,并提示可以使用相应的构建工具(如 make)来举行编译。
  make 执行过程

  make 是一个基于依赖关系的编译工具,它根据 Makefile 中界说的规则来决定哪些文件需要重新编译,从而提高编译效率。其执行过程如下:
  1. 读取 Makefile 文件

  make 会在当前目录下查找 Makefile 文件(如果指定了其他文件名,也可以读取其他文件),并剖析此中的规则和依赖关系。
  2. 确定目标

  当执行 make 下令时,可以指定一个或多个目标(target)。如果没有指定目标,make 会默认执行 Makefile 中的第一个目标。目标通常表现要生成的文件,如可执行文件、库文件等。
  3. 检查依赖关系

  make 会检查目标文件的依赖关系,即哪些文件的修改会影响目标文件的生成。如果某个依赖文件的修改时间晚于目标文件的修改时间,或者目标文件不存在,make 会以为该目标需要重新生成。
  4. 执行下令

  对于需要重新生成的目标,make 会执行 Makefile 中界说的相应下令。这些下令通常是编译器下令,用于将源文件编译成目标文件,然后将目标文件链接成可执行文件或库文件。
  5. 完成编译

  当全部目标都被处理完毕后,make 会输出编译完成的信息,此时项目的可执行文件或库文件就生成了。
  1. # 创建项目目录
  2. mkdir my_project
  3. cd my_project
  4. # 创建源文件
  5. touch main.cpp
  6. echo '#include <iostream>
  7. int main() {
  8.     std::cout << "Hello, World!" << std::endl;
  9.     return 0;
  10. }' > main.cpp
  11. # 创建 CMakeLists.txt 文件
  12. touch CMakeLists.txt
  13. echo 'cmake_minimum_required(VERSION 3.10)
  14. project(MyProject)
  15. add_executable(my_program main.cpp)' > CMakeLists.txt
  16. # 创建构建目录
  17. mkdir build
  18. cd build
  19. # 执行 cmake 命令,指定源目录为上一级目录
  20. cmake ..
  21. # 执行 make 命令进行编译
  22. make
复制代码
在上述示例中,起首创建了一个简朴的 C++ 项目,包含一个源文件 main.cpp 和一个 CMakeLists.txt 文件。然后创建了一个构建目录 build,在该目录下执行 cmake .. 下令生成 Makefile,最后执行 make 下令举行编译,生成可执行文件 my_program。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! 更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

惊雷无声

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表