原文:https://www.cnblogs.com/Stultz-Lee/p/10012366.html#%E4%BD%BF%E7%94%A8nmake

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 脚本 ,做到真正的一键编译。

  1. echo off
  2. echo 'start cmake in windows'
  3. call "e:/Program Files/Microsoft Visual Studio 9/VC/vcvarsall.bat" x86
  4. cd win-build
  5. cmake .. -G "NMake Makefiles"
  6. nmake
  7. 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