什么是cmake

你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的 MSnmake,BSD Make(pmake),Makepp,等等。这些 Make 工具遵循着不同的规范和标准,所执行的 Makefile 格式也千差万别。这样就带来了一个严峻的问题:如果软件想跨平台,必须要保证能够在不同平台编译。而如果使用上面的 Make 工具,就得为每一种标准写一次 Makefile ,这将是一件让人抓狂的工作。

CMake就是针对上面问题所设计的工具:它首先允许开发者编写一种平台无关的 CMakeList.txt 文件来定制整个编译流程,然后再根据目标用户的平台进一步生成所需的本地化 Makefile 和工程文件,如 Unix 的 Makefile 或 Windows 的 Visual Studio 工程。从而做到“Write once, run everywhere”。显然,CMake 是一个比上述几种 make 更高级的编译配置工具。一些使用 CMake 作为项目架构系统的知名开源项目有 VTK、ITK、KDE、OpenCV、OSG 等。

在 linux 平台下使用 CMake 生成 Makefile 并编译的流程如下:

编写 CMake 配置文件 CMakeLists.txt 。
执行命令 cmake PATH 或者 ccmake PATH 生成 Makefile。其中, PATH 是 CMakeLists.txt 所在的目录。(ccmake 和 cmake 的区别在于前者提供了一个交互式的界面)
使用 make 命令进行编译。

在windows下流程类似,但是用nmake代替make。

PS:Windows下尽量不要用make,坑比较多。

搭建环境

  1. 安装MSVC2017
    官网
  2. 安装cmake
    官网

搭建demo


main.cpp

#include <iostream>using namespace std;int main(void)
{std::cout<<"hello!"<<std::endl;return 0;
}

CMakeLists.txt

cmake_minimum_required (VERSION 3.13)
project(Hello)# 查找指定目录下的所有源文件,然后将结果存进指定变量名
aux_source_directory(. SRC_LIST)add_executable(hello ${SRC_LIST})

编译运行

  1. 打开命令行
  2. 创建build文件夹
mkdir build && cd build
  1. 生成makefile
cmake .. -G"NMake Makefiles"
  1. 编译
nmake
  1. 运行
hello.exe

WINDOWS CMAKE与NMAKE相关推荐

  1. gcc/g++/makefile/easymake/cmake/xmake/nmake ...

    最简单的Makefile,但是还是大程序少不了makefile工具 #CC=arm-linux-gnueabihf- CC= target:     $(CC)gcc -o algo_main alg ...

  2. windows下,‘nmake‘不是内部或外部命令,也不是可运行的程序或批处理文件

    目录 一.问题描述. 二.问题分析. 三.解决方案. 一.问题描述. windows下进行nmake时报错:,'nmake' 不是内部或外部命令,也不是可运行的程序 或批处理文件. 二.问题分析. 缺 ...

  3. 【zlmediakit】windows cmake +vs 构建

    windows cmake+vs构建zlmediakit及测试程序 需求 支持avcodec avformat 库 支持testplayer 生成和构建 支持 aac 编码器 libafaac 做了调 ...

  4. 编译工具make、gmake、cmake、nmake和Dmake的区别

    1.  gamke, make, nmake, dmake, cmake 异同 现有编译工具 ----------------- gmake是GNU Make的缩写.       Linux系统环境下 ...

  5. cmake,make,nmake的用法

    于是开始找跨平台的编译工具,其中最有名的两个是 cmake 和 scons,cmake 之所以出名估计是因为 KDE 4 从 autotools 转向用 cmake 来编译.而 scons 则是 li ...

  6. windows + cmake + vs2019 编程

    1.安装minGW64 2.安装cmake 3.安装vs2019 4.组建代码文件结构: 5.在build 文件下打开git bash,执行一下指令 cmake .. -G"Visual S ...

  7. zlib、libzip、 libzippp 库编译(windows + cmake + vs2013)

    "libzipp" 这库是基于 "libzip" 之上封装的,而 "libzip" 又是基于 "zlib"库封装的,所以 ...

  8. Windows cmake 编译x86版本的opencv

    opencv 3.0 之后已经不提供x86版本了 先说下环境: 操作系统:win10 x64 编译器: visual studio 2019 CMake:3.23 下面是编译过程中踩的坑 1. vis ...

  9. windows cmake调试Google test 报错:VERSION keyword not followed by a value...

    cmake 生成makefile 这一步时,报错: C:\Users\-----\googletest-main\googletest\mybuild>cmake -G "MinGW ...

  10. Windows下CMake安装使用

    目录 1. CMake简介 2. Cmake下载安装 3. CMake样例 4. cmake-gui使用 4. cmake与nmake生成器构建Makefile 1. CMake简介 CMake是一个 ...

最新文章

  1. algid parse error, not a sequence错误
  2. SQLServer 实现rownum 的功能
  3. 西安科技大学计算机考研难度,西安科技大学考研难吗
  4. Aroma's Search(暴力)
  5. MySQL分布式ID_分布式唯一ID系列(3)——数据库自增ID机制适合做分布式ID吗
  6. 一:Java语言概述
  7. 苹果出现长方形透明框_安卓还像苹果用户所说用两年就卡吗?|安卓|安卓系统|安卓手机|苹果ios...
  8. Selenium WebDriver高级应用
  9. 校园采花经历(超级爆笑)
  10. 2020大厂到底有多少程序员?腾讯研发人员占比68%
  11. 【其它】颜色的知识--亮度、色相、饱和度、对比度
  12. Jrebel、IDEA的激活与Springloaded使用
  13. python爬虫(网页解析)
  14. no main manifest attribute, in xxxx.jar 项目部署报错
  15. 链接和二维码被微信拦截(被封锁、被屏蔽、被和谐)的最新解决方法——MaxJump
  16. 区块链技术正向积极乐观的智能前景发展
  17. 实例讨论数据可视化的配色思路
  18. Unity3d跨场景背景音乐和场景切换加载界面的设置!
  19. linux java 僵尸进程_Linux 系统中僵尸进程
  20. 能生成Deepfake也能诊断癌症,GAN与恶的距离

热门文章

  1. 恶意代码分析实战 lab1-4
  2. 剑桥: 一个完美的读书地方
  3. 微机计算机继电保护原理,微机继电保护的装置构成
  4. Flutter 画笔(Paint)、绘制直线(drawLine)
  5. linux ac97声卡驱动下载,《声卡驱动》AC97声卡/创新/主板集成
  6. 科技爱好者周刊(第 149 期):新能源汽车,谁会是赢家?
  7. HSqlDB认识及使用
  8. 常见的SQL面试题:经典50题(附详解)
  9. pta查验身份证。个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。
  10. 服务器linux simsun.ttc is not a valid ttf file