欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

CMake快速入门01:CMake简介与安装

时间:2023-07-23

目录

1 CMake简介

2 CMake安装

3 CMake基本使用

3.1 实验源文件

3.2 实验CMakeLists.txt

3.2.1 CMakeList.txt命令概述

3.2.2 add_executable命令

3.2.3 cmake_minimum_required命令

3.2.4 project命令

3.3 生成构建脚本

3.4 构建程序


1 CMake简介

1、CMake是一个开源的跨平台工具

2、CMake可以用于构建、测试以及打包软件

3、CMake并不直接构建出最终的程序,而是产生标准的构建脚本(e.g、Linux中的Makefile),之后再以一般的构建方式使用(e.g、Linux中的make)

2 CMake安装

CMake官网:https://cmake.org/

1、CMake以源码以及二进制文件的方式发布,可以根据需求与不同平台选择适合的版本

2、对于Ubuntu操作系统,可以使用如下命令安装CMake

sudo apt-get install cmake

说明:安装完成后,可以使用如下命令查看安装的CMake版本

cmake --version

对应版本的简要教程:CMake Tutorial ‒ CMake 3.16.9 documentation

3 CMake基本使用

3.1 实验源文件

在tutorial目录中创建tutorial.cxx源文件,内容如下,

实验程序从命令行获取参数,并计算该参数的平方根

3.2 实验CMakeLists.txt

在tutorial目录中创建CMakeLists.txt文件,该文件用于指导CMake工具生成构建脚本,内容如下,

3.2.1 CMakeList.txt命令概述

CMakeList.txt中使用的命令可分为,

1、脚本命令(scripting Commands)

2、工程命令(Project Commands)

参考资料:cmake-commands(7) ‒ CMake 3.16.9 documentation

3.2.2 add_executable命令

1、add_executable命令属于project commands,格式如下,

add_executable( [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL]               [source1] [source2 ...])

2、add_executable命令用于向工程中添加可执行文件,以及编译该可执行文件所需的源文件列表。其中可执行文件的文件名为,也可以通过OUTPUT_NAME属性设置

3、默认情况下,可执行文件在构建程序的目录下生成,可以设置RUNTIME_OUTPUT_DIRECTORY属性指定生成的目录

说明1:如果工程中使用target_sources命令指定源文件,则在add_executable命令中可以省略源文件列表

说明2:如果使用EXCLUDE_FROM_ALL标志,则是从所有源文件中排除指定的文件

3.2.3 cmake_minimum_required命令

1、cmake_minimun_required命令属于scripting commands,格式如下,

cmake_minimum_required(VERSION [...] [FATAL_ERROR])

2、cmake_minimun_required命令用于指定cmake工具所需的最低版本

3.2.4 project命令

1 project命令属于project commands,格式如下,

project( [...])project(        [VERSION [.[.[.]]]]        [DEscriptION ]        [HOMEPAGE_URL ]        [LANGUAGES ...])

2、project命令用于设置功能的名字,该名字会设置PROJECT_NAME属性与CMAKE_PROJECT_NAME属性

3、在设置工程名字的同时,还可以设置工程的版本号和描述信息

3.3 生成构建脚本

在tutorial目录下创建build目录,

在build目录下执行如下命令生成构建脚本,

cmake .、# CMakeLists.txt位于上级目录

可见会在build目录下生成构建脚本,

3.4 构建程序

在build目录下执行make命令,即可进行程序的构建

最终编译出的可执行文件运行效果如下,

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。