CMake入门实践一文中,我们初略的介绍了CMake的跨平台性和使用方法。

本文将学习在Windows下如何系统的使用CMake,会涉及到msbuild ,nmake等Windows本地的工具库,如果不是很了解,可以先百度看看。

cmake有Windows的GNU工具,这个工具很傻瓜化,这里不做介绍。

回顾代码工程中有什么

  1. 源文件 如cpp 文件
  2. 头文件 如h文件
  3. 我们自己的库文件 ,lib 或者dll文件
  4. 三方库,不过一般而言,我们使用库文件的lib或者dll然后加上它的头文件即可
  5. 资源文件
  6. 其他?

将需要的东西在cmake脚本CMakeLists.txt中申明

CMakeLists.txt的写法规则及语法:

该文很全面了,我不再造轮子了

一键型编译

CMakeLists.txt 文件写好后,我们就可以开始编译了,和之前的介绍的一样,我们最好将编译生成的文件全部放入一个中间文件夹中。

linux下的一键编译是非常优美的,windows程序员因为被VS等IDE包养,并不是很愿意使用黑压压的命令行工作,但是,我会告诉你,使用命令行工作已经是大势所趋了。你不仅需要熟悉命令行工作,更应该擅长此道。

widows下也有自己的命令行编译工具,比如msbuild,nmake等。这两个工具是和VS一起升级维护的,所以对于像笔者这样,一台机器安装3个版本的VS的人,要使用正确版本的编译工具其实需要走些路。

使用nmake

以下是笔者希望使用VS2008的nmake需要完成的工作:

  1. 首先打开cmder
  2. 找到VS2008的安装路径,比如笔者的是E:\Program Files\Microsoft Visual Studio 9
  3. 在cmder中输入 "E:\Program Files\Microsoft Visual Studio 9\VC\vcvarsall.bat" x86(双引号很重要,必须, x86表示我希望编译32位程序)
  4. 环境配置完成后,切换路径到win-build(这是我自定义的代码生成中间文件夹,外围才是我的工程代码)输入cmake .. -G "NMake Makefiles"
  5. 然后输入nmake
  6. 编译无误后生成了可执行程序

补充说明:

  • 使用其他编译环境同VS2008即可,找到该版本的VS的目录,输入命令配置nmake环境
  • 该配置环境只在本次控制台有效,不会影响你的系统配置

使用msbuild

使用msbuild的步骤和nmake大同小异:

将上面第4步的cmake .. -G "NMake Makefiles" 换成 cmake .. -G "Visual Studio 9 2008"

将上面第5步的nmake 换成 MSBuild.exe Project.sln 这个Project.sln 换成你自己的工程名即可

实现一键编译

可以把命令写成bat脚本 ,做到真正的一键编译。

echo off

echo 'start cmake in windows'

call "e:/Program Files/Microsoft Visual Studio 9/VC/vcvarsall.bat" x86

cd  win-build

cmake .. -G "NMake Makefiles"

nmake

echo 'end all'

其他可以参考,将该bat文件放在和cmake脚本文件同路径下,即可一键生成exe执行文件。

参考

官方指导

https://blog.csdn.net/qq_22042587/article/details/78850708

https://blog.csdn.net/yaoyuanyylyy/article/details/79024962

http://www.360doc.com/content/14/1113/13/9075092_424804822.shtml

https://blog.csdn.net/gxuan/article/details/7701035

https://blog.csdn.net/yanchuang1/article/details/69683236

https://www.cnblogs.com/cv-pr/p/6206921.html

https://blog.csdn.net/libaineu2004/article/details/78995740

Windows下使用CMake进阶的更多相关文章

  1. windows下安装cmake

    windows下安装cmake 下载地址 download -> cmake-3.12.0-rc2-win64-x64.msi 安装 验证cmake --version

  2. windows下使用cmake编译zlib与libpng libjpeg

    win7下使用VS2010编译jpeglib 1.下载源代码下载地址:http://www.ijg.org/files/,     选择最新版本的windows版本压缩包,进行下载.     jpeg ...

  3. Windows下利用CMake和VS2013编译OpenCV

    转载自:http://www.chengxulvtu.com/2014/03/19/windows_build-opencv-with-cmake-and-vs2013.html   获取OpenCV ...

  4. windows下使用cmake+mingw配置makefile

    前面一节说了cmake简易使用,但是实际开发中项目文件非常多,使用哪种简易方式会导致代码十分混乱,因此本文介绍一种cmake管理大型项目的demo流程. 具体步骤如下: 1.创建相关的项目目录 cmd ...

  5. windows 下使用cmake指定visual studio 版本

    https://blog.csdn.net/iceboy314159/article/details/87829950

  6. Windows下VTK6.0.0安装详解(CMake使用说明)

    操作系统:Windows7,用到工具:Visual studio.CMake. 1.准备工作 VTK下载: 下载最新VTK稳定版(6.0.0,截至2013年7月)http://www.vtk.org/ ...

  7. Windows 下使用 MinGW 和 CMake 进行开发

    CMake 是个非常棒的项目管理工具,这已经是毋庸置疑的. 一些小工具需要在 win 下开发,所以今天探索使用 MinGW 和 CMake 在 win 下的搭配使用.简单做记录. MinGW 使用 Q ...

  8. Windows下CMake编译安装OpenCV

    Windows下CMake编译安装OpenCV 这是一个面向新手的在windows上运进opencv, helloword的教程. 在这里我们使用vs2019来编译opencv, 并运行一个hello ...

  9. windows下使用vs进行Proctocol Buffer开发(C++篇)

    因工作原因接触Proctocol Buffer(protobuf),至于什么是protobuf,为何使用protobuf,我就不赘述了,百度下都是答案. 今天我介绍的是在windows下使用vs进行p ...

随机推荐

  1. Linux下安装SVN服务端

    安装 使用yum安装非常简单: yum install subversion 配置 2.1. 创建仓库 我们这里在/home下建立一个名为svn的仓库(repository),以后所有代码都放在这个下 ...

  2. git如何生成单个文件的补丁

    背景:有时候碰到一个commit包含了好几个文件的修改,但是我只需要其中一个文件的修改内容,那么这时候就需要以下方法来生成这一个文件对应修改内容的补丁 答:git format-patch " ...

  3. [BZOJ4653 区间]

    Description 在数轴上有 n个闭区间 [l1,r1],[l2,r2],...,[ln,rn].现在要从中选出 m 个区间,使得这 m个区间共同包含至少一个位置.换句话说,就是使得存在一个 x ...

  4. 从零开始玩转JMX(四)——Apache Commons Modeler & Dynamic MBean

    Apache Commons Modeler 前面的Model MBean的创建方式看上去特别复杂,一个简单功能的类ModelMBeanUtils 写了很多代码,那有木有简单点的方式呢,答案是肯定的, ...

  5. [异常记录(三)] 从 bcp 客户端收到一个对 colid 12 无效的列长度

    这个问题是使用SqlBulkCopy拷贝数据,字符串长度超出数据类型长度导致的. 处理过程中对长度进行判断并截取就OK了. *注:SqlBulkCopy 这货 要求ColumnMappings 列的大 ...

  6. CSS之position体验

    目录: 1. position介绍 2. relative 3. position 4. fixed与static 5. 总结 1. position介绍 position最简单的理解就是元素位置的定 ...

  7. 如何成为 Python 高手

    这篇文章主要是对我收集的一些文章的摘要.因为已经有很多比我有才华的人写出了大量关于如何成为优秀Python程序员的好文章. 我的总结主要集中在四个基本题目上:函数式编程,性能,测试,编码规范.如果一个 ...

  8. ionic+cordova 学习开发App(一)

    一.项目所需环境 (一)jdk 1.jdk的安装,必须同时包含Java 和javac [一般安装包中都包含有,可以确定下] (二)node.js 和NPM 1.大多插件和辅助工具都运行在NPm平台上. ...

  9. bzoj1093: [ZJOI2007]最大半连通子图 scc缩点+dag上dp

    一个有向图G=(V,E)称为半连通的(Semi-Connected),如果满足:?u,v∈V,满足u→v或v→u,即对于图中任意两点u,v,存在一条u到v的有向路径或者从v到u的有向路径.若G'=(V ...

  10. STL学习笔记(转,还是比较全的)

    STL简介 1 概况 2 1.1 STL是什么 2 1.2 为什么我们需要学习STL 2 1.3 初识STL 2 1.4 STL 的组成 5 2 容器 6 2.1 基本容器——向量(vector) 6 ...