CMake超详细入门教程

作者:暴富20212024.04.01 17:27浏览量:26

简介:CMake是一个开源的、跨平台的自动化构建系统,它控制着编译过程的方式和Unix的make相似,但功能更为强大。本篇文章将带你从安装CMake开始,逐步深入了解CMakeLists.txt文件的基本语法,如何将编译文件与源文件分离,如何使用CMake编译多个源文件以及生成库文件。通过生动的语言和丰富的实例,让你轻松掌握CMake的实际应用和实践经验。

在软件开发中,构建系统扮演着至关重要的角色。它负责将源代码编译成可执行文件或库文件,并确保代码在各种不同的平台和编译器上正确运行。而CMake则是一个广泛使用的开源构建系统,它以其强大的功能和灵活性受到了开发者的青睐。

一、安装CMake

首先,我们需要安装CMake。CMake可以在多个操作系统上运行,包括Windows、Linux和macOS等。你可以从CMake的官方网站下载适合你的操作系统的安装包,并按照官方文档进行安装。

安装完成后,你可以通过在命令行中输入cmake --version来验证是否安装成功。如果一切正常,你应该能够看到CMake的版本信息。

二、CMakeLists.txt文件基本语法

CMake的核心是一个名为CMakeLists.txt的文件,它描述了如何构建你的项目。下面是一个简单的CMakeLists.txt文件的示例:

  1. cmake_minimum_required(VERSION 3.10)
  2. project(MyProject)
  3. set(SRC_FILES main.cpp)
  4. add_executable(MyProject ${SRC_FILES})

这个CMakeLists.txt文件做了以下几件事情:

  1. cmake_minimum_required(VERSION 3.10):指定了CMake的最低版本要求。

  2. project(MyProject):定义了项目的名称。

  3. set(SRC_FILES main.cpp):定义了一个变量SRC_FILES,并将其设置为main.cpp

  4. add_executable(MyProject ${SRC_FILES}):使用add_executable命令指定生成的可执行文件的名称(MyProject)以及包含在主可执行文件中的源文件列表(${SRC_FILES})。

三、如何将编译文件与源文件分离

在大型项目中,通常会有许多源文件,为了保持CMakeLists.txt文件的清晰和可维护性,我们可以将源文件列表放在一个单独的文件中,例如sources.cmake,然后在CMakeLists.txt文件中包含它。

  1. cmake_minimum_required(VERSION 3.10)
  2. project(MyProject)
  3. include(sources.cmake)
  4. add_executable(MyProject ${SRC_FILES})

sources.cmake文件中,你可以列出所有的源文件:

  1. set(SRC_FILES
  2. main.cpp
  3. file1.cpp
  4. file2.cpp
  5. # ...
  6. )

四、使用CMake编译多个源文件

在大型项目中,通常会有多个源文件需要编译。你可以使用add_executable命令来指定每个可执行文件及其对应的源文件列表。例如,如果你有多个源文件需要编译成不同的可执行文件,你可以这样做:

  1. cmake_minimum_required(VERSION 3.10)
  2. project(MyProject)
  3. include(sources.cmake)
  4. add_executable(Executable1 ${SRC_FILES_1})
  5. add_executable(Executable2 ${SRC_FILES_2})
  6. # ...

在这个例子中,你需要在sources.cmake文件中定义不同的源文件列表变量,例如SRC_FILES_1SRC_FILES_2,分别对应不同的可执行文件所需的源文件。

五、使用CMake生成库文件

除了生成可执行文件外,CMake还可以用来生成库文件,包括静态库和动态库。你可以使用add_library命令来指定生成库的名称和源文件列表。

  1. cmake_minimum_required(VERSION 3.10)
  2. project(MyLibrary)
  3. set(LIB_FILES
  4. lib1.cpp
  5. lib2.cpp
  6. # ...
  7. )
  8. add_library(MyLibrary ${LIB_FILES})

在这个例子中,add_library命令指定了生成的库文件的名称(MyLibrary)以及包含在库文件中的源文件列表(${LIB_FILES})。

六、生成Makefile和可执行文件

在CMakeLists.txt文件编写完成后,你可以使用CMake来生成Makefile文件,并通过Makefile来编译生成可执行文件或库文件。

首先,在CMakeLists.txt文件所在的目录下创建一个名为build的目录,并进入该目录。