• 下载
  • 安装
  • 例1 使用cmake-gui与VS生成器
  • 例3 PreLoadcmake用法

本文描述在Win10-64位系统中安装CMake、cmake-gui的简单使用及其与VS2015编译器的结合使用,以及cmake命令行与nmake的结合使用。

下载

从CMake官网上下载最新版本的安装包,本文中下载的是 cmake-3.10.1-win64-x64.msi。若不想安装,可直接下载压缩包版本cmake-3.10.1-win64-x64.zip。

安装

CMake的安装非常简单。压缩包版本直接解压即可,安装版本也可一直点击下一步进行安装。为了使用方便,可将CMake配置到环境变量中,当然,这一步也可以在安装过程中设置。另外需要注意的是为了避免不必要的麻烦,路径中最好不要包括中文字符。下面简单描述一下安装过程。

  1. 双击下载的安装包,进入安装界面,点击[Next]。
  2. 勾选同意许可后,点击[Next]。
  3. 可在此处选择将CMake路径添加到环境变量中,并且创建CMake GUI程序的桌面快捷方式。然后点击[Next]。
  4. 可在此处自定义安装目录,设置好后点击[Next]。
  5. 开始安装,安装完成后点击[Next]。
  6. 安装完成,点击[Finish],结束安装过程。
  7. 安装完成后,即可使用CMake了。在命令行中输入"cmake --version",可看到如下图所示的输出。

例1 使用cmake-gui与VS生成器

本例使用cmake-gui和VS生成器构建出VS工程,然后用VS工具打开项目进行编译。

1. 新建CMakeTest目录,在CMakeTest目录下新建demo1目录,作为测试项目的根目录。在demo1下新建main.cpp和CMakeLists.txt文件。

main.cpp文件的内容很简单,就是输出一个提示字符串:

#include <iostream>
using namespace std;void main()
{cout<<"cmake test demo 1"<<endl;getchar();
}

CMakeLists文件内容如下:

# CMake最低版本要求
cmake_minimum_required(VERSION 3.10.1)# 项目信息
project(demo1)# 指定生成目标
add_executable(demo main.cpp)

CMakeLists.txt 的语法比较简单,由命令、注释和空格组成。命令由命令名称、小括号和参数组成,参数之间使用空格进行间隔,且命令是不区分大小写的。符号 # 后面的内容被认为是注释。

对于上面的 CMakeLists.txt 文件,依次出现了几个命令:

  • cmake_minimum_required:指定运行此配置文件所需的 CMake 的最低版本,如果低于3.10.1版本,则构建过程会被终止
  • project:参数值是 demo1,该命令表示项目的名称是 demo1
  • add_executable: 将名为 main.cpp 的源文件编译成一个名称为 demo 的可执行文件

2. 打开cmake-gui程序,在上方配置两个目录:

  • 第一个是CMakeLists文件目录,cmake据此开始执行
  • 第二个是cmake构建后的项目目录

3. 配置好点击[Configure]开始执行配置过程。首先会弹出编译器选择界面,此处使用默认的VS2015-32位编译器,直接点击[Finish],开始配置。

4. 第一次配置完成后如图所示,红色的两行是新的配置值,再次点击[Configure]即可。


5. 配置完成后,在build目录生成了如下的文件

6. 点击[Generate],开始生成VS项目

7. 生成完成后,在build目录下生成了demo1对于的VS项目

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

9. cmake生的demo1工程总共有3个项目

  • ZERO_CHECK:该项目会检查生成工程的 CMake 配置文件( CMakeLists.txt )是否更新。如更新,将运行 CMake 重新生成工程文件。如果确信 CMakeLists.txt 不会被更新,或者希望手工运行 CMake 重新生成工程文件,可以在 CMakeLists.txt 配置文件中添加 set(CMAKE_SUPPRESS_REGENERATION FALSE) 命令, ZERO_CHECK 目标将不会生成。
  • ALL_BUILD:该目标会导致工程中所有项目被构建,类似 Visual Studio 的 Build All 或者 make 的 make all命令。
  • demo:项目本身,就是在CMakeLists.txt文件中配置的project(demo1)

10. 在VS中通过单独生成项目demo1或者直接生成项目All_BUILD后,可以在build下的相应目录看到可执行文件demo.exe已经生成。双击demo.exe后,可以看到程序输出。

11. 如果不想用VS打开工程,也可以使用msbuild.exe编译demo1工程。首先需要打开VS命令行,因为cmake-gui中选择的编译器是32位的,所以此处选择”VS2015 x86 本机工具命令提示符”。

打开后在命令行中进入到demo1的build目录,执行msbuild demo1.sln即可编译demo1项目。编译完成后可以在debug中看到生成的demo.exe文件,双击可运行。

#例2 使用cmake命令与nmake生成器 本例使用cmake命令行与nmake生成器构建Makefile,然后用nmake编译项目。
1. 新建项目demo2,将demo1中的main.cpp和CMakeLists.txt文件拷贝过来。将CMakeLists.txt文件中的project项目配置为demo2。 2. 同样从VS命令行进入到demo2目录,执行命令:

 cmake -G "NMake Makefiles" .

执行完毕后,即可看到在demo2目录中生成了一些文件:

其中重要的是Makefile文件,这是用来编译项目的。在命令行中继续执行nmake命令开始编译,编译完成后可以看到在demo2目录生成了demo.exe程序。允许后可以看到输出。

例3 PreLoad.cmake用法

在命令行下使用cmake,需要用”-G”选项指定生成器。每次都输入感觉比较麻烦,可以将其配置在”PreLoad.cmake”文件中。新建项目demo3,准备好main.cpp和CMakeLists.txt文件,然后demo3目录下新建文件”PreLoad.cmake”,输入:

set(CMAKE_GENERATOR "NMake Makefiles" CACHE INTERNAL "" FORCE)

然后执行"cmake ."即可配置,然后执行"nmake"就可以编译。

CMake入门1——CMake与VS编译器和nmake的结合使用相关推荐

  1. CMake入门(二)

    CMake入门(二) 最后更新日期:2014-04-25 by kagula 阅读前提:<CMake入门(一)>.Linux的基本操作 环境: Windows 8.1 64bit英文版.V ...

  2. CMake入门指南-编译教程

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

  3. cmake 入门学习

    https://alenstar.github.io/post/cmake_template/ 首先我们来看看我们的工程目录结构 $ tree myprojectmyproject # 工程目录 ├─ ...

  4. [转] CMake入门

    转载说明: 文章转自网络,版权归原作者所有, 原文链接: https://www.hahack.com/codes/cmake/ 特别感谢发哥(写代码的篮球痴 )分享 文章目录 ▌什么是 CMake? ...

  5. 分享一篇很不错的CMake入门文章,值得收藏细读!

    https://www.hahack.com/codes/cmake/ ▌什么是 CMake? 你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的 MS nma ...

  6. C++ CMake入门和进阶(二):CMake语法

    CMake也是有语法的,这里总结一些.CMake系列学习个人笔记: C++ CMake入门和进阶(一):使用CMake编译项目 文章目录 输出 message 分支 if/elseif/else/en ...

  7. CMake 入门实战,从实例入手,讲解 CMake 的常见用法,例如aux_source_directory的用法

    http://www.hahack.com/codes/cmake/ https://sourceforge.net/projects/qmake2cmake/ --qmake转换cmake小工具 什 ...

  8. 转载——cmake入门教程

    https://aiden-dong.github.io/2019/07/20/CMake教程之CMake从入门到应用/#入门案例 cmake升级教程: Linux下升级CMake版本 - 程序员大本 ...

  9. cmakelist官方教程_超详细的cmake入门教程

    什么是cmake 你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的 MSnmake,BSD Make(pmake),Makepp,等等.这些 Make 工具遵 ...

最新文章

  1. 2015 百度之星 1003 棋盘占领 dfs
  2. 【Android 属性动画】属性动画 Property Animation 简介 ( 属性动画简介 | 属性动画特性 )
  3. 【Modern OpenGL】纹理 Textures
  4. 工作流实战_02_flowable 流程模板导入
  5. android自定义alertdialog不现实输入法,自定义的dialog中的EditText无法弹出输入法解决方案...
  6. java 品尝饮料,java细节经典题型
  7. 《scikit-learn》使用交叉验证优化KNN参数
  8. Maven无法下载远程依赖-强制下载也不行
  9. 揭秘Keras推荐系统如何建立模型、获取用户爱好
  10. eclipse最有用快捷键整理
  11. 百度中文手写输入法linux版,[Linux]百度输入法Linux版 V1.0.1.0 [2020.05.19]
  12. python xlwt用法_24.python中xlwt模块用法详解
  13. android markdown简历,Markdown+GitHub制作DIY简历
  14. global.php,深入理解PHP中的global
  15. 上班族用哪个邮箱好用,如何正确使用邮件工作?...
  16. MS-DOS系统的操作命令
  17. Postman批量参数化测试
  18. 无线传感器网络数据融合技术
  19. 一个好看的input输入动画
  20. 仿网易云音乐html代码,仿网易云音乐外链播放器UI的HTML5音乐播放器插件

热门文章

  1. 第二章:python必备基础语法
  2. 【综合类型第 35 篇】程序员的七夕浪漫时刻
  3. 证件照背景颜色怎么用手机换
  4. 监控系统选型,一文轻松解决
  5. 轻松使用Nginx搭建web服务器
  6. mysql 插入数据报错,a foreign key constraint fails
  7. 〖Python 数据库开发实战 - Python与Redis交互篇⑯〗- 综合案例 - 新闻管理系统第二阶段完结 - “app.py“ 模块收尾及案例演示
  8. 基于百度api接口的车辆识别计费系统
  9. L1-086 斯德哥尔摩火车上的题
  10. Spring Security oauth2.0微信小程序登录