【CMake保姆级教程】CMake的使用

文章目录

  • 前言
  • CMake的使用
    • 注释
      • 注释行
      • 注释块
    • CMake操作
    • 共处一室
    • VIP 包房


前言

在上节课我们已经讲了CMake的安装和简单使用,本节课我们来讲解CMake的命令和他的含义


CMake的使用

CMake支持大写、小写、混合大小写的命令。如果在编写CMakeLists.txt文件时使用的工具有对应的命令提示,那么大小写随缘即可,不要太过在意。

注释

注释行

注释行:
其实就是注释一行的内容和我们C/C++的//一样的功能。
CMake 使用 # 进行行注释,可以放在任何位置

# 这是一个 CMakeLists.txt 文件

注释块

注释块:
其实就是注释一行或者多行的内容,和我们C/C++的/**/一样的功能。

CMake 使用 #[[ ]] 形式进行块注释。

#[[ 这是一个 CMakeLists.txt 文件。
这是一个 CMakeLists.txt 文件
这是一个 CMakeLists.txt 文件]]

CMake操作

  1. 设置CMake的最低版本
cmake_minimum_required(VERSION 3.0.0)#设置cmake最低版本为3.0.0.0
  1. 定义工程名称,并可指定工程的版本、工程描述、web主页地址、支持的语言(默认情况支持所有语言),如果不需要这些都是可以忽略的,只需要指定出工程名字即可。

定义工程名称语法:

# PROJECT 指令的语法是:
project(<PROJECT-NAME> [<language-name>...])
project(<PROJECT-NAME>
       [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]
       [DESCRIPTION <project-description-string>]
       [HOMEPAGE_URL <url-string>]
       [LANGUAGES <language-name>...])

常见的使用如下:

project(test)
  1. 定义工程会生成一个可执行程序
    使用add_executable定义工程会生成一个可执行程序。
#样式1
add_executable(生成的可执行文件名称 1.c 2.c n.c)#源文件中间使用空格隔开
#样式2
add_executable(生成的可执行文件名称 1.c;2.c;n.c)#源文件中间使用 ";"隔开

共处一室

cmake测试文件:

cmake_minimum_required(VERSION 3.0.0)
project(test)
add_executable(app main.c func.c)

当源文件像下面这样,在同一个文件夹下,并且生成的cmake文件也在一个文件夹这就叫共处一室。
未执行cmake前:

├── CMakeLists.txt
├── func.c
└── main.c

使用cmake .make执行后
就会多出很多文件↓

├── app#new file
├── CMakeCache.txt#new file
├── CMakeFiles#new file
│   ├── 3.22.1
│   │   ├── CMakeCCompiler.cmake
│   │   ├── CMakeCXXCompiler.cmake
│   │   ├── CMakeDetermineCompilerABI_C.bin
│   │   ├── CMakeDetermineCompilerABI_CXX.bin
│   │   ├── CMakeSystem.cmake
│   │   ├── CompilerIdC
│   │   │   ├── a.out
│   │   │   ├── CMakeCCompilerId.c
│   │   │   └── tmp
│   │   └── CompilerIdCXX
│   │       ├── a.out
│   │       ├── CMakeCXXCompilerId.cpp
│   │       └── tmp
│   ├── app.dir#new file
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── compiler_depend.make
│   │   ├── compiler_depend.ts
│   │   ├── DependInfo.cmake
│   │   ├── depend.make
│   │   ├── flags.make
│   │   ├── func.c.o
│   │   ├── func.c.o.d
│   │   ├── link.txt
│   │   ├── main.c.o
│   │   ├── main.c.o.d
│   │   └── progress.make
│   ├── cmake.check_cache
│   ├── CMakeDirectoryInformation.cmake
│   ├── CMakeOutput.log
│   ├── CMakeTmp
│   ├── Makefile2
│   ├── Makefile.cmake
│   ├── progress.marks
│   └── TargetDirectories.txt
├── cmake_install.cmake#new file
├── CMakeLists.txt
├── func.c
├── main.c
└── Makefile#new file

最终可执行程序app就被编译出来了(这个名字是在CMakeLists.txt中指定的)。

VIP 包房

通过上面的例子可以看出,如果在CMakeLists.txt文件所在目录执行了cmake命令之后就会生成一些目录和文件(包括 makefile 文件),如果再基于makefile文件执行make命令,程序在编译过程中还会生成一些中间文件和一个可执行文件,这样会导致整个项目目录看起来很混乱,不太容易管理和维护,此时我们就可以把生成的这些与项目源码无关的文件统一放到一个对应的目录里边,比如将这个目录命名为build:

├── build
├── CMakeLists.txt
├── func.c
└── main.c

使用cd build/命令打开他。
在这里插入图片描述

使用cmake ..命令执行cmake因为CMakeLists.txt在上级目录,所以使用cmake ..
在这里插入图片描述
像这样就是好了。

直接在本目录执行make命令生成可执行文件
在这里插入图片描述
使用tree命令,得到下面的东西:

├── app
├── CMakeCache.txt
├── CMakeFiles
│   ├── 3.22.1
│   │   ├── CMakeCCompiler.cmake
│   │   ├── CMakeCXXCompiler.cmake
│   │   ├── CMakeDetermineCompilerABI_C.bin
│   │   ├── CMakeDetermineCompilerABI_CXX.bin
│   │   ├── CMakeSystem.cmake
│   │   ├── CompilerIdC
│   │   │   ├── a.out
│   │   │   ├── CMakeCCompilerId.c
│   │   │   └── tmp
│   │   └── CompilerIdCXX
│   │       ├── a.out
│   │       ├── CMakeCXXCompilerId.cpp
│   │       └── tmp
│   ├── app.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── compiler_depend.internal
│   │   ├── compiler_depend.make
│   │   ├── compiler_depend.ts
│   │   ├── DependInfo.cmake
│   │   ├── depend.make
│   │   ├── flags.make
│   │   ├── func.c.o
│   │   ├── func.c.o.d
│   │   ├── link.txt
│   │   ├── main.c.o
│   │   ├── main.c.o.d
│   │   └── progress.make
│   ├── cmake.check_cache
│   ├── CMakeDirectoryInformation.cmake
│   ├── CMakeOutput.log
│   ├── CMakeTmp
│   ├── Makefile2
│   ├── Makefile.cmake
│   ├── progress.marks
│   └── TargetDirectories.txt
├── cmake_install.cmake
└── Makefile

我们发现app我们指定的可执行文件就在这里。
我们使用./app去执行他
在这里插入图片描述
这时就执行出我们的东西了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
CMake 是一个跨平台的开源构建工具,用于自动化构建、测试和安装软件项目。它使用一个简单的配置文件 CMakeLists.txt 来描述构建过程。 在 Windows 上使用 CMake 进行构建,可以按照以下步骤进行操作: 1. 首先,确保已经安装了 CMake。你可以从 [CMake 官方网站](https://cmake.org/download/) 下载最新版本的 CMake,并按照安装向导进行安装。 2. 创建一个用于构建的目录,例如 `build` 目录,并进入该目录。 3. 在 `build` 目录中,打开命令提示符或者 PowerShell,并执行以下命令: ``` cmake <path_to_source> ``` 其中 `<path_to_source>` 是你代码项目的根目录路径。执行以上命令将会在 `build` 目录下生成构建文件。 4. 执行生成的构建文件,例如 Visual Studio 的解决方案文件 `.sln` 或者 Makefile。具体的命令将根据你的构建文件类型而有所不同。 - 如果是 Visual Studio 解决方案文件,可以使用以下命令打开 Visual Studio 并进行构建: ``` start <project_name>.sln ``` 其中 `<project_name>` 是你的项目名称。 - 如果是 Makefile,可以使用以下命令进行构建: ``` make ``` 5. 构建完成后,你可以在相应目录下找到生成的可执行文件或库文件,进行测试或使用。 这些是使用 CMake 在 Windows 上进行构建的基本步骤。具体情况可能因项目而异,你可能需要根据你的项目结构和需求进行适当的调整。如果有需要,你可以参考 CMake 的官方文档或在线教程,进一步了解更多关于 CMake 的用法和配置选项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人才程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值