CMake(cross platform make)是一个开源的跨平台工具系列,旨在构建,测试和打包软件。

使用指定名为CMakeLists.txt的配置文件可以控制软件的构建、测试和打包等流程。

通过编写平台无关的CMakeLists.txt文件和需要简单的配置,CMake就能生成对应目标平台的构建文件

1.安装

(1)Linux

所有主流的Linux发行版的源中都包含有cmake的安装包,直接从源中添加即可

(2)windows

选择 cmake-3.15.0-rc3-win64-x64.zip

解压

设置环境变量 path,eg:E:\baby\software\cmake-3.15.0-rc3-win64-x64\bin

测试,win+R,cmd,执行命令 cmake  --version

2.cmake使用

准备:

安装的是VS2015

设置VS2015的环境变量,以便cmake能找到编译器(设置方法 查看)

准备需要的文件和目录

目录 E:\C\cmake

HelloWorld.cpp

#include

using namespacestd;intmain() {

cout<

system("pause");return 0;

}

CMakeLists.txt

cmake_minimum_required (VERSION 2.6)

project (HelloWorld)

add_executable (HelloWorld HelloWorld.cpp)

说明:

第1行,cmake需要的最低版本

第2行,创建了一个名为 HelloWorld 工程,对应生成一个 HelloWorld.sln 。project函数表示创建一个工程

第3行,添加一个名为 HelloWorld 的可执行程序项目,它的源代码为 HelloWorld.cpp

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

(1)cmake命令

A.生成编译工程文件

cmake [] ( | )

打开cmd,进入E:\C\cmake目录,运行命令

cmake .

输出

-- Building for: Visual Studio 14 2015

-- The C compiler identification is MSVC 19.0.24215.1

-- The CXX compiler identification is MSVC 19.0.24215.1

-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio14.0/VC/bin/cl.exe-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio14.0/VC/bin/cl.exe --works--Detecting C compiler ABI info-- Detecting C compiler ABI info -done--Detecting C compile features-- Detecting C compile features -done-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studi

o14.0/VC/bin/cl.exe-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studi

o14.0/VC/bin/cl.exe --works--Detecting CXX compiler ABI info-- Detecting CXX compiler ABI info -done--Detecting CXX compile features-- Detecting CXX compile features -done--Configuring done-- Generating done

生成文件

B.编译工程

cmake --build

debug模式(默认)

cmake --build .

输出

Microsoft (R) 生成引擎版本 14.0.25420.1版权所有(C) Microsoft Corporation。保留所有权利。

Checking Build System

Building Custom Rule E:/C/cmake/CMakeLists.txt

HelloWorld.cpp

HelloWorld.vcxproj->E:\C\cmake\Debug\HelloWorld.exe

HelloWorld.vcxproj-> E:/C/cmake/Debug/HelloWorld.pdb (Full PDB)

Building Custom Rule E:/C/cmake/CMakeLists.txt

Release模式

cmake --build . -- /p:Configuration=Release

输出

Microsoft (R) 生成引擎版本 14.0.25420.1版权所有(C) Microsoft Corporation。保留所有权利。

Checking Build System

Building Custom Rule E:/C/cmake/CMakeLists.txt

HelloWorld.cpp

HelloWorld.vcxproj->E:\C\cmake\Release\HelloWorld.exe

Building Custom Rule E:/C/cmake/CMakeLists.txt

进入到带有exe的目录,执行HelloWorld.exe

(2)cmake-gui使用

删掉上一步生成的文件和目录,保留下面的

A .打开cmake-gui程序,配置目录

B.点Configure开始执行配置

配置完成后,build目录为

C.点击 Generate,开始生成 VS 项目

D.编译

d1)打开VS

点击cmake-gui中下放的 Open Project 按钮或者直接双击 build 目录下的 HelloWorld.sln,即可在VS中打开工程

cmake生的HelloWorld工程共有3个项目

说明:

ALL_BUILD

该目标会导致工程中所有项目被构建,类似 Visual Studio 的 Build All 或者 make 的 make all命令

HelloWorld

项目本身,就是在CMakeLists.txt文件中配置的project(HelloWorld)

ZERO_CHECK

该项目会检查生成工程的 CMake 配置文件( CMakeLists.txt )是否更新。

如更新,将运行 CMake 重新生成工程文件。

如果确信 CMakeLists.txt 不会被更新,或者希望手工运行 CMake 重新生成工程文件,可以在 CMakeLists.txt 配置文件中添加 set(CMAKE_SUPPRESS_REGENERATION FALSE) 命令, ZERO_CHECK 目标将不会生成

单独生成项目HelloWorld,在build下的相应目录看到可执行文件HelloWorld.exe已经生成。

双击HelloWorld.exe后,可以看到程序输出

d2)打开VS命令行

在开始菜单,打开VS2015 x86 本机工具命令提示符

进入到build目录下 ,执行 msbuild HelloWorld.sln,输出

Microsoft (R) 生成引擎版本 14.0.25420.1版权所有(C) Microsoft Corporation。保留所有权利。

在此解决方案中一次生成一个项目。若要启用并行生成,请添加“/m”开关。

生成启动时间为2019/7/9 13:03:53。

节点1上的项目“E:\C\cmake\build\HelloWorld.sln”(默认目标)。

ValidateSolutionConfiguration:

正在生成解决方案配置“Debug|Win32”。

ValidateProjects:

在解决方案配置“Debug|Win32”中未选定生成项目“ALL_BUILD”。

项目“E:\C\cmake\build\HelloWorld.sln”(1)正在节点 1上生成“E:\C\cmake\build\He

lloWorld.vc

xproj.metaproj”(2) (默认目标)。

项目“E:\C\cmake\build\HelloWorld.vcxproj.metaproj”(2)正在节点 1上生成“E:\C\c

make\build\

ZERO_CHECK.vcxproj”(3) (默认目标)。

PrepareForBuild:

正在创建目录“E:\C\cmake\build\Debug\”。

InitializeBuildStatus:

正在创建“Win32\Debug\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild”,因为已指

定“AlwaysCr

eate”。

CustomBuild:

所有输出均为最新。

FinalizeBuildStatus:

正在删除文件“Win32\Debug\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild”。

正在对“Win32\Debug\ZERO_CHECK\ZERO_CHECK.tlog\ZERO_CHECK.lastbuildstate”执行

Touch

任务。

已完成生成项目“E:\C\cmake\build\ZERO_CHECK.vcxproj”(默认目标)的操作。

项目“E:\C\cmake\build\HelloWorld.vcxproj.metaproj”(2)正在节点 1上生成“E:\C\c

make\build\

HelloWorld.vcxproj”(4) (默认目标)。

PrepareForBuild:

正在创建目录“HelloWorld.dir\Debug\”。

正在创建目录“HelloWorld.dir\Debug\HelloWorld.tlog\”。

InitializeBuildStatus:

正在创建“HelloWorld.dir\Debug\HelloWorld.tlog\unsuccessfulbuild”,因为已指定

“AlwaysCrea

te”。

CustomBuild:

Building Custom Rule E:/C/cmake/CMakeLists.txt

ClCompile:

C:\Program Files (x86)\Microsoft Visual Studio14.0\VC\bin\CL.exe /c /Zi /nol

ogo/W1 /WX- /Od /Ob0 /Oy- /D WIN32 /D _WINDOWS /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS/Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline/GR /Fo"HelloWorld.dir\Debug\\" /Fd"HelloWorld.dir\Debug\vc140.pdb" /Gd/TP /analyze- /errorReport:queue E:\C\cmake\HelloWorld.cpp

HelloWorld.cpp

Link:

C:\Program Files (x86)\Microsoft Visual Studio14.0\VC\bin\link.exe /ERRORREP

ORT:QUEUE/OUT:"E:\C\cmake\build\Debug\HelloWorld.exe" /INCREMENTAL /NOLOGO k

ernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.

lib uuid.lib comdlg32.lib advapi32.lib/MANIFEST /MANIFESTUAC:"level='asInvok

er'uiAccess='false'" /manifest:embed /DEBUG /PDB:"E:/C/cmake/build/Debug/Hel

loWorld.pdb"/SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"E:/C/cmake/build/Debug/HelloWorld.lib"/MACHINE:X86 /SAFESEH /machine:X86 HelloW

orld.dir\Debug\HelloWorld.obj

HelloWorld.vcxproj->E:\C\cmake\build\Debug\HelloWorld.exe

HelloWorld.vcxproj-> E:/C/cmake/build/Debug/HelloWorld.pdb (Full PDB)

FinalizeBuildStatus:

正在删除文件“HelloWorld.dir\Debug\HelloWorld.tlog\unsuccessfulbuild”。

正在对“HelloWorld.dir\Debug\HelloWorld.tlog\HelloWorld.lastbuildstate”执行 T

ouch 任

务。

已完成生成项目“E:\C\cmake\build\HelloWorld.vcxproj”(默认目标)的操作。

已完成生成项目“E:\C\cmake\build\HelloWorld.vcxproj.metaproj”(默认目标)的操作。

已完成生成项目“E:\C\cmake\build\HelloWorld.sln”(默认目标)的操作。

已成功生成。0个警告0个错误

已用时间00:00:01.92

View Code

可以在Debug中看到生成的HelloWorld.exe文件,双击可运行

(3) 使用cmake命令与nmake生成器

删掉上一步生成的文件和目录,保留下面的

A.使用cmake命令行与nmake生成器构建Makefile

打开VS2015 x86 本机工具命令提示符

进入cmake目录,执行

cmake -G "NMake Makefiles" .

B.编译,执行命令 nmake

在cmake目录生成了HelloWorld.exe程序

cmake gui安装教程_cmake安装与使用相关推荐

  1. cmake gui安装教程_CMake安装使用教程

    CMake是一个比make更高级的编译配置工具,它可以根据不同平台.不同的编译器,生成相应的Makefile或者vcproj项目. 通过编写CMakeLists.txt,可以控制生成的Makefile ...

  2. mysql5 7安装教程_MySQL57安装教程

    MySQL57安装教程... --------------------------- 首先需要下载MySQL57安装包: --------------------------------------- ...

  3. 解决M1芯片无法安装AE闪退问题,AEcc2021中文直装版兼容M1芯片安装教程 M1安装方案

    Adobe After Effects 2021 mac M1版上线啦!ae2021 mac中文版是ae Mac的最新版本,全新优化专为Mac用户设计,让不可能变为可能.ae 2021 mac破解版下 ...

  4. JDK安装 + MyEclipse安装:JDK安装教程+MyEclipse安装教程(包含视频教程)

    jdk安装 + myeclipse安装:jdk安装教程+myeclipse安装教程: 1.JDK简介:java开发环境,包含JRE(java运行环境)+ 和java开发工具包. 2.MyEclipse ...

  5. Android Studio安装教程及安装中出现问题的解决办法

    Android Studio安装教程及安装中出现问题的解决办法 Android Studio安装教程: 安装网址: AndroidDevtools下载:https://developer.androi ...

  6. dlib安装教程,安装出错的点进来

    dlib 库是一个用来人脸关键点检测的 python 库,但因为其是 C++ 编写(或需要 C++编译?),使得我们在安装时遇到各种各样问题.笔者在不同电脑上安装遇到的问题都不同,但最后经过搜索,都解 ...

  7. python的安装教程-python安装教程 Pycharm安装详细教程

    python安装教程和Pycharm安装详细教程,分享给大家. 首先我们来安装python 1.首先进入网站下载:点击打开链接(或自己输入网址https://www.python.org/downlo ...

  8. python要不要装pycharm-python安装教程 Pycharm安装详细教程

    这篇文章主要介绍了python的安装教程,和Pycharm的安装详细教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 python安装教程和Pycharm安装详细教程,分享给大家. 首先我们来安 ...

  9. 2020mysql安装教程_2020MySQL安装图文教程

    MySQL安装图文教程(Windows10) 1.MySQL下载 可以去MySQL官网下载,或者在我提供的百度云链接下载.官网下载网速较慢,我从官网下载了将近四个小时,然后把下载好的放在了百度网盘,需 ...

最新文章

  1. React——Flow代码静态检查
  2. find 命令_linux中find命令的使用
  3. python xpath语法-Python xpath表达式如何实现数据处理
  4. Properties 类的使用
  5. 相机标定(2)opencv2实现
  6. SQL Server IF Exists 判断数据库对象是否存在的用法
  7. format函数_Python学习教程:Python3之字符串格式化format函数详解(上)
  8. LINUX下载编译libfaac
  9. 通过apache对页面进行压缩和页面缓存来提升性能
  10. Windows Server 2003 SP2(32位) 中文版 下载地址 光盘整合方法
  11. 机器人学DH参数及利用matlab符号运算推导
  12. VBScript 程序员参考手册 读书笔记08-
  13. kali安装最新版nessus
  14. Windows下VS2015编译caffe(CPU ONLY)
  15. 通过jad/mc/redefine命令,在docker容器中实现动态更新代码的功能:
  16. burg算法matlab求功率谱,基于AR模型的Burg算法功率谱估计.doc
  17. c#笔记--程序集(Assembly)、模块(Module)、类型(class)、命名空间、反射
  18. 真正牛逼的人,都是极简主义者!!
  19. 西储大学轴承数据小波变换
  20. 肠道菌群检测粪便样本的采集保存方法

热门文章

  1. HTML5,CSS3,JS绘制饼图
  2. [导入]如何动态生成table(javascript)
  3. JavaScript Document对象DOM
  4. 利用jsonp、iframe和location.hash解决跨域问题
  5. 有关文档碎片(document fragment)的用法
  6. margin-top失效的解决办法
  7. Java多线程(学习总结,持续更新)
  8. java框架ssh实验报告_基于SSH的实验报告提交系统
  9. Dart 10-Day
  10. 如何监测服务器网络稳定性centos,centos下网络监测工具nethogs