CMake的安装和使用

这篇具有很好参考价值的文章主要介绍了CMake的安装和使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Windows平台

1. 下载CMake和MinGW,并安装。

(1)CMake下载和安装:

下载地址:Download | CMake  可以直接下载如下安装程序进行安装:

CMake的安装和使用

 安装时注意,选择将cmake命令加入系统环境变量,如下:

CMake的安装和使用

或者装完后手动配置环境变量,将CMake安装路径下的bin目录加入环境变量,如下:

CMake的安装和使用

打开终端或cmd测试CMake安装是否成功,如下表示成功:

CMake的安装和使用


(2)MinGW下载和安装:

下载地址:MinGW-w64 - for 32 and 64 bit Windows - Browse /mingw-w64 at SourceForge.net

可以直接下载如下安装程序进行安装:

CMake的安装和使用

安装时根据自己电脑选择,如我是64位系统:

CMake的安装和使用

装完手动配置环境变量,将MinGW安装路径下的bin目录加入环境变量(本人已装完,不知道安装过程中是否有和CMake一样的添加入环境变量的选项,有则无需手动配置):

CMake的安装和使用

 打开终端或cmd测试MinGW安装是否成功,如下表示成功:

 CMake的安装和使用


2. CMake的快速上手

本部分先熟悉一下CMake使用的大致流程,第三部分会展开介绍CMake的详细使用。

使用CMake构建简单的Hello world程序:

(1)创建项目文件夹demo,其中包含build和src两个子文件夹:

CMake的安装和使用

build文件夹用于存放CMake生成的文件,如CMake会生成GNU编译器的Makefile等文件,或Visual Studio编译器的项目文件,可执行文件等。

src文件夹用于存放源代码和CMakeLists.txt文件。

        CMakeLists.txt文件用于存储cmake生成的构建文件的位置、编译器类型、编译选项等。

(2)在src文件夹下创建hello.cpp,写入Hello world程序。

(3)在src文件夹下创建CMakeLists.txt文件,写入如下内容:

cmake_minimum_required(VERSION 3.10)  # 要求cmake最低版本为3.10

project(hello) # 项目名为hello

add_executable(hello hello.cpp)  # 使用hello.cpp生成可执行文件hello.exe

(4)在项目文件夹下打开终端窗口,构建项目:

命令:cmake CMakeLists.txt的路径  ,如:

cmake ..\src

本人电脑默认使用Visual Studio的MSCV编译器进行构建,如下:

CMake的安装和使用

输入CMake --help命令查看所有编译器,找到Generators,前面带星号的是当前使用的编译器:

CMake的安装和使用

 若需使用gccg++,则需在构建命令中加上 "MinGW Makefiles" ,如下:

cmake CMakeLists.txt -G "MinGW Makefiles" ..\src\

成功生成:

CMake的安装和使用

 之后使用build选项进行编译链接:

 CMake的安装和使用

 此时build目录下生成了可以运行的hello.exe


3. CMake的详细使用

3.1 概念

a)目标文件(target):可执行文件(add_executable)、库文件(add_library);

b)命令(cmake-command):也称为函数;

c)变量(cmake-variable):以CMAKE_开头的变量名;

d)属性(cmake-properties):文件/文件夹都有各自的属性。

补充:

a)cmake命令不区分大小写,但参数、变量区分;

b)参数间使用空格或分号隔开;

c)使用${VAR}引用变量;

d)引号可加可不加,但若字符串中有空格必须加;

CMake的安装和使用


3.2 命令

(1)cmake_mininum_required

设置cmake的最低版本。

用法:

cmake_minimum_required(VERSION 版本号)

示例:

cmake_minimum_required(VERSION 3.10)

(2)project

设置项目名、版本号、语言。

用法:

# 用法1:
project(<项目名> [<语言>])
# 若未指定语言,则默认使用C和CXX(即C++)

# 用法2:
project(<项目名> [<VERSION 版本号>] [<LANGUAGES 语言>])

示例:

# 用法1:
project(demo C CXX)
# 项目名:demo,使用语言:C和C++

# 用法2:
project(demo VERSION 1.0 LANGUAGES C CXX)
# 项目名:demo,版本号:1.0,使用语言:C和C++

(3)message

输出信息。

用法:

message([<mode> "..."]
# mode有如下选项:
#    STATUS:前缀加上 --
#    SEND_ERROR:产生错误,跳过生成过程
#    FATAL_ERROR:产生错误,终止运行

项目名会存储在变量PROJECT_NAMECMAKE_PROJECT_NAME中(CMAKE_开头的变量为cmake内置变量);

源文件路径存储在变量PROJECT_SOURCE_DIR中,等价于<PROJECT_NAME>_SOURCE_DIR;

构建文件(即build文件夹)路径存储在变量PROJECT_BINARY_DIR中,等价于<PROJECT_NAME>_BINARY_DIR

项目版本号存储在变量PROJECT_VERSION中,等价于<PROJECT_NAME>_VERSION

项目主版本号存储在变量PROJECT_VERSION_MAJOR中,等价于<PROJECT_NAME>_VERSION_MAJOR

项目次版本号存储在变量PROJECT_VERSION_MINOR中,等价于<PROJECT_NAME>_VERSION_MINOR

示例:使用message命令打印上述部分变量,注意变量需使用${}引用:

CMake的安装和使用

build文件夹下打开终端,使用如下cmake命令构建:

CMake的安装和使用


(4)add_executable 

用指定的源文件生成可执行文件。

用法:

add_executable(<name> [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] [source1] [source2...])
# name为生产的可执行文件名(与项目名无关)
# 如Windows系统会生成name.exe

 示例:

add_executable(demo helloworld.cpp)
# 用helloworld.cpp生成demo.exe可执行文件(Windows)

CMake的安装和使用


(5)set

将变量设置为指定值。

用法:

set(<variable> <value>)

简单使用示例:

set(A 1)
# 将A设置为1

set(CMAKE_CXX_STANDARD 11)
# 设置C++标准,注:CMAKE_开头的变量为cmake内置变量

设置输出文件位置示例:

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
# 将运行时目标文件(exe、dll、so等)输出位置设置为/build/bin

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
# 将归档文件(lib、a等)输出位置设置为/build/bin

(6)option

定义一个开关。

用法:

option(<variable> "<描述>" [value])
# value的值为ON或OFF,默认为OFF
# 命令行使用cmake命令时,可使用 -D<variable>=ON/OFF 选项来覆盖定义option时的开关状态

会结合下面的configure_file给出使用示例。


(7)configure_file

将输入文件进行替换并生成输出文件。

用法1:

configure_file(<input> <output>)
# input文件中形如@VAR@或${VAR}的字符串会被替换为这些变量的当前值,若未定义则被替换为空字符串。
# 注意:VAR必须在替换命令之前定义。

用法1示例:

input01.h中的 @PROJECT_VERSION@ ${PROJECT_VERSION} 替换为项目版本号,并将替换后的文件输出为output.h

input01.h文件:

CMake的安装和使用

 CMakeLists.txt文件中的写法:

CMake的安装和使用

使用cmake -G "MinGW Makefiles" ..\src命令构建完后,会在build目录下生成output.h文件,并且已替换成功:

CMake的安装和使用

用法2:

#cmakedefine VAR ...

// 上面的命令会根据VAR是否被set,替换为以下以下两行之一

#define VAR ...    // VAR被set
/* #undef VAR */   // VAR未被set

用法2示例:

结合option开关使用,有以下需求:

① 定义开关DATE_ENABLEOFF状态;

② 若开关为ON状态,则设置DATE变量为20230511

③ 若设置了DATE变量,则将input01.h中的#cmakedefine DATE 2023替换为#define DATE 2023,并输出到output.h文件中;

CMake的安装和使用

input01.h文件:

CMake的安装和使用

开关为的状态,此时输入cmake -G "MinGW Makefiles" ..\src构建,可见output.h中的结果:

CMake的安装和使用

在命令中加入-DDATE_ENABLE=ON参数选项将开关设置为,再构建,可见output.h中的结果:

CMake的安装和使用


(8)include_directories

指定所有目标的头文件搜索路径。

用法:

include_directories(dir1 [dir2 ...])
# 将目录dir1、dir2添加到INCLUDE_DIRECTORIES属性中,即编译器的头文件搜索路径;
# 编译时,这些添加的路径会是所有目标的头文件搜索路径。

示例:

比如hello.cpp中想要包含build目录下的func.h头文件:

CMake的安装和使用

若未在CMakeLists.txt中指定头文件的搜索路径,则编译链接时会出错,如下:

CMake的安装和使用

 需要在CMakeLists.txt中让编译器知道头文件的搜索路径在build目录下:

CMake的安装和使用

 此时再次编译成功:

CMake的安装和使用


(9)target_executable_directories

指定某个目标的头文件搜索路径。

用法:

target_include_directories(<target> <INTERFACE|PUBLIC|PRIVATE> <dir1> [<INTERFACE|PUBLIC|PRIVATE> <dir2>] ... )
# 为target目标文件添加搜索路径dir1、dir2;
# 目标文件有INCLUDE_DIRECTORIES和INTERFACE_INCLUDE_DIRECTORIES两个属性
# INCLUDE_DIRECTORIES为对内头文件目录,INTERFACE_INCLUDE_DIRECTORIES为对外头文件目录。
INCLUDE_DIRECTORIES INTERFACE_INCLUDE_DIRECTORIES
PRIVATE
INTERFACE
PUBLIC

示例:

如指定hello目标文件的头文件搜索路径为build:

CMake的安装和使用

即可编译成功。 


3.3 库的生成和链接

(1)add_subdirectory

添加源文件目录。

用法:

add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL])
# source_dir 源文件目录的位置。
# binary_dir 指定编译生成文件存放的位置。

(2)add_library

用指定的源文件生成库。

用法:

add_library(<name> [STATIC|SHARED|MODULE] [EXCLUDE_FROM_ALL] [<source>...])
# STATIC静态库,SHARED动态库。
# 生成库的名字是lib<name>.so或lib<name>.a

(3)target_link_libraries

链接库。

用法:

target_link_libraries(<target> <PRIVATE|PUBLIC|INTERFACE> <item>)
# target 链接入的目标文件,item可以是一个targe,也可以绝对路径。

示例:

如在src目录下有calc子目录,其中的源码是实现加减运算:

CMake的安装和使用

则需在CMakeLists.txt中加入如下,表示将calc目录加入生成、编译过程:

CMake的安装和使用

calc目录中也添加CMakeLists.txt文件:

CMake的安装和使用

CMakeLists.txt如下,旨在将加法运算源码生成静态库

CMake的安装和使用

构建并编译:

CMake的安装和使用

生成的静态库文件存放于build/calc目录下:

CMake的安装和使用 

将生成的静态库链接如目标文件,使得目标文件可使用:

CMake的安装和使用

 生成、编译成功:

CMake的安装和使用

动态库只需将STATIC改为SHARED


 区别:

# 指定搜索头文件的路径
include_directories() # 所有
target_include_directories() #单个

# 链接库
link_libraries()
target_link_libraries()


3.4 文件的安装

将可执行文件、库文件、头文件等安装到指定目录。类似于复制。

用法:

install(TARGETS <target> DESTINATION <dir>)
# 安装目标文件

install(FILES <file> DESTINATION <dir>)
# 安装普通文件

install(PROGRAMS <非目标文件的可执行程序(如脚本)> DESTINATION <dir>) 

install(DIRECTORY <dir> DESTINATION <dir>) 
# 安装目录

示例:

install(TARGET MathFunctions DESTINATION lib) # 安装目标文件
install(FILES MathFunctions.h DESTINATION include) # 安装文件
install(DIRECTORY doc/ DESTINATION d) # 安装目录

 命令行用法:文章来源地址https://www.toymoban.com/news/detail-439776.html

cmake --install .   # 将当前目录安装到默认目录
cmake --install . --prefix <dir>   # 将当前目录安装到dir目录

到了这里,关于CMake的安装和使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • GCC - 基于win10平台搭建Cmake + MinGW + gcc-arm-none 开源开发环境

    基于GUN开源工具链,搭建Windows平台下 ARM 编译运行环境! 🐱‍🚀 文中涉及的开发工具包已打包上传 ,可点击此处下载。 1、 建议直接下载安装git (内部集成有该工具),也可点击此处单独下载Git Bash工具; 2、如无法直接调用,添加对应环境变量; 32位下载地址:  MinG

    2024年02月10日
    浏览(28)
  • Windows下基于VSCode搭建C++开发环境(包含整合MinGW64、CMake的详细流程)

    最近想写写C++,装了VisualStudio 2022,折腾半天。对于一个用惯VSCode的人来说,总感觉IDE太笨重。于是自己网上各种查资料,自己琢磨,搭建了一套Windows下基于VSCode和CMake的C++轻量级开发环境。 1. 下载并安装VSCode VSCode下载地址(AzureCDN加速地址) 首先同意安装协议: 下一步,

    2024年02月15日
    浏览(53)
  • windows平台使用CMake工具对darknet的编译以及安装过程+yolov3+图像检测+摄像头检测+视频检测+手机作为摄像头进行检测(详解)

    目录 1.编译和安装教程 (1)安装visual studio 2022 (2)CMake下载及安装 (3)下载darknet.zip文件 (4)安装OpenCV  (5)修改Makefile文件 (6)修改CMakeLists.txt文件 (7)使用CMake工具 2.yolov3进行测试 (1)单张图像进行检测  (2)开启摄像头进行检测 (3) 视频检测 (4)使用手机摄

    2024年02月05日
    浏览(50)
  • win下使用MinGW-w64+cmake搭建c++开发环境

    关于MinGW与MSVC MSVC: 即Microsoft Visual C++ Compiler,即微软自己的编译器 我们下载Windows下的OpenCV时,会带两个文件夹VC14,VC15(分别与Visual Studio的版本有对应关系),这两个文件夹下的库可以直接运行不需要编译 将VS作为Qt的开发环境也是使用这个编译器的缘故 MinGW: 我们都知道

    2024年02月11日
    浏览(31)
  • Visual Studio 2022使用CMake+MinGW+Clang+LLDB作为开发环境

    笔者前面写了两篇关于Visual Studio 2022使用MinGW的博文:《Visual Studio 2022使用MinGW来编译调试C/C++程序》、《Visual Studio 2022 CMake+MinGW+GDB 调试目标程序》,这两篇博文都是介绍的是GCC+GDB的编译与调试,本文笔者介绍的则是Clang+LLDB的编译与调试。读完本文,读者可以在GCC、Clang与

    2024年02月06日
    浏览(58)
  • MinGW下载和安装详细步骤 及 环境配置

    一、下载 点击 这里 进入官网下载最新版本的MinGW。(这里下载的是Windows32位,但MinGW的所有软件都将在64位Windows平台上执行,所以32位和64位都是一样的。) 二、安装 1.  下载完成后,双击程序进行安装;  2. 点击【Install】; 3. 点击【continue】; 4. 这里等待一下,等它安装

    2024年01月25日
    浏览(39)
  • 【MinGW】一篇文章带你安装MinGW-w64(windows)

    目录 1、MinGW-w64介绍 标头、库和运行时 2、MinGW-w64安装步骤  3、配置环境变量  4、验证是否安装成功 mingw-w64 项目是 gcc 的一个完整的运行时环境,用于支持 Windows 64 位和 32 位操作系统原生的二进制文件。 Mingw-w64是原始 mingw.org 项目的进步,旨在 在Windows系统上支持GCC编译器

    2024年02月06日
    浏览(41)
  • Windows mingw64 最简易 安装配置

    其实挺简单一件事 很多教程都搞复杂了 自己写一个 只需要两步 1. 下载压缩包并解压 2. 配置环境变量 (1). GitHub 下载地址 Releases · niXman/mingw-builds-binaries · GitHub 如果GitHub下载太慢可以来这里加速 或者用地址2 GitHub Proxy 代理加速 (ghproxy.com) (2). 下载地址2  WinLibs - GCC+MinGW-w64 c

    2024年02月13日
    浏览(34)
  • MinGW-w64:VScode编译工具下载安装配置教程

     MinGW-w64官网页面链接:MinGW-w64 MinGW,是 Minimalist  GNU  for Windows 的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。MinGW 是一组包含文件和端口库

    2024年02月05日
    浏览(58)
  • Windows下QT Creator安装MinGW 32bit编译器

      注:本作者是基于FFmpeg开发需要,故在Windows下QT Creator中安装MinGW 32bit编译器!其它型号编译器参照此文章基本可以实现! 1、下载链接 链接: 2、下载后的文件(Qt路径下包含:5.12.0文件和Tools文件): 1、将:Qt/Tools/mingw730_32拷贝到QT Creator安装路径下的Tools文件下 2、将:

    2024年02月14日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包