维基百科介绍“CMake是个开源跨平台自动化建构系统,它用配置文件控制建构过程(build process)的方式和UnixMake相似,只是CMake的配置文件取名为CMakeLists.txt。Cmake并不直接建构出最终的软件,而是产生标准的建构档(如Unix的Makefile或WindowsVisual C++的projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是CMake和SCons等其他类似系统的区别之处。”

1. CMake安装

https://cmake.org/download/, windows下载cmake-3.5.2-win32-x86.msi

安装后的界面

2. Hello World Example

假设你建立了文件夹 E:\Playground\CMakeExamples\HelloWorld,下面有一个文件HelloWorld.cpp

#include <iostream>
int main()
{
std::cout<<"Hello World!"<<std::endl;
return 0;
}

在同一文件夹下面创建CMakeLists.txt文件

cmake_minimum_required(VERSION 3.0)
project (hello)

add_executable(hello helloworld.cpp)

  • 第一行设置需要的CMake最低版本号,一般设置为你目前使用的CMake版本号,便于后续维护工作。
  • 第二行设置project名字
  • 第三行add_executable,第一个参量为生成可执行文件名字,取决于所在平台会生成hello.exe,或者hello.a或其他格式。第二个参量为所需要的源文件列表。

图形界面下运行:

在Where is the source code后面填写CMakeLists.txt所在文件夹,注意是CMakeLists.txt所在文件夹,不是HelloWorld.cpp所在文件夹。后面例子会讲到源文件与CMakeLists不在同一目录下的情形。

Where to build the binaries: 可以是任意一个文件夹,保持生成的项目文件,这里我选择生成在Build文件夹下。设置后点击 Configure后你需要选择项目生成器,这里我选择Visual Studio 14 2015 Win64

点击Finish后

CMake自动设置各种变量,不用理会红色部分,点击Generate,在Build文件夹下面会生成

生成了hello.sln,project呢,除了hello.vcxproj还有ALL_BUILD.vcxproj和ZERO_CHECK.vcxproj。

stackoverflow上给的答案是

After some more searching, I found the answer at https://cmake.org/pipermail/cmake/2008-November/025448.html:

Armin Berres — 11/22/2008, 3:12:41 PM

ZERO_CHECK will rerun cmake. You can/should execute this after changing something on your CMake files.

ALL_BUILD is simply a target which builds all and everything project in the active solution, I guess one can compare it to "make all".

你可以用visual studio打开hello.sln,编译,运行。这里我们用msbuild编译。如果命令行提示msbuild无法找到,请先添加C:\Windows\Microsoft.NET\Framework64\v4.0.30319到系统PATH变量中。

在Build目录下,运行

msbuild hello.vcxproj

运行Debug\hello.exe,查看输出。

如果要编译成Release,运行

msbuild /p:Configuration=Release hello.vcxproj

windows下CMake使用图文手册 Part 1的更多相关文章

  1. windows下CMake使用图文手册 Part 3

    例子3: 构建动态库(.dll) 静态库(.lib) 采用和例子2一样的文件,但删除了main.cpp E:.               │  CMakeLists.txt │            ...

  2. windows下CMake使用图文手册 Part 2

    例子2:有目录的项目 我现在有个文件夹ProjectDate,有如下文件结构 E:. │  CMakeLists.txt │ ├─include │      Date.h │ └─src       ...

  3. windows下CMake使用图文手册 Part 4

    例子4:链接静态库(.lib) 例子3里面我们构建了date.lib, 这个例子里我们调用这个库. 前提: date.h的头文件在 E:\Playground\CMakeExamples\DateLi ...

  4. Windows下CMake编译安装OpenCV

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

  5. 在Windows下编译ffmpeg完全手册

    本文的内容几乎全部来自于FFmpeg on Windows,但是由于国内的网络封锁,很难访问这个域名下的内容,因此我一方面按照我自己的理解和实践做了翻译,另一方面也是为了能提供一个方便的参考方法. 注 ...

  6. [转]在Windows下编译ffmpeg完全手册

    本文的内容几乎全部来自于FFmpeg on Windows,但是由于国内的网络封锁,很难访问这个域名下的内容,因此我一方面按照我自己的理解和实践做了翻译,另一方面也是为了能提供一个方便的参考方法. 注 ...

  7. windows下安装Mysql—图文详解

    mysql安装过程及注意事项: 1.1. 下载: 我下载的是64位系统的zip包: 下载地址:https://dev.mysql.com/downloads/mysql/ 下载zip的包: 下载后解压 ...

  8. windows下安装Mysql(图文详解)

      博客园 | 首页 | 新随笔 | 联系 | 订阅 | 管理 mysql安装过程及注意事项: 1.1. 下载: 我下载的是64位系统的zip包: 下载地址:https://dev.mysql.com ...

  9. Windows下C++/Fortran调用.exe可执行文件

    目录 软件环境 Windows下CMake编译配置 设置项目的generator Command Line CMake GUI PreLoad.cmake 设置make 示例程序 CMake 设置Fo ...

随机推荐

  1. [非原创]eclipse中一些常见svn图标的含义

    项目视图   The Package Explorer view - 已忽略版本控制的文件.可以通过Window → Preferences → Team → Ignored Resources.来忽 ...

  2. div隐藏与显示

    <input type="button" value="隐藏详情" class="jishu_n_k1_input2" id=&quo ...

  3. 关于自定义Dialog的一次折腾

    <新手,自己的简单理解,勿喷,有更好建议欢迎提出>   1.在设置dialog布局上的时候 我需要做一个圆角的dialog,我像往常一样定义一个<shape>然后做为我的dia ...

  4. cookie单点登录(跨域访问)

    新近一家公司上来就让做oa,要求嵌入公司现有系统模块,自然而然想到模拟post单点登录对方系统新建单点登陆页面保存session,然现有系统都有用cookie保存用户信息,故保存本地cookie……测 ...

  5. apache2.2 搭载本地中转服务器

    android手机微信里点击本地链接=>apache2.2服务器响应--- 翻译网址至本地目标服务器 ---目标服务器响应,返回结果给微信浏览器. 运行环境 微信版本6.3.8 手机 MIUI6 ...

  6. Beta版本测试报告

    爬虫测试: 由于爬虫是整个系统的数据来源,十分的重要,但是由于引用了jar包并且运行复杂,这里主要做功能性测试,通过增加seed,运行爬虫,可以在后台控制台看到日志的不断刷新以及数据库条目的不断增加, ...

  7. coderforces #387 Servers(模拟)

    Servers time limit per test 2 seconds memory limit per test 256 megabytes input standard input outpu ...

  8. cx_oracle 执行cur.execute(sql)提交数据出现 UnicodeEncodeError: 'ascii' codec can't encode character u'\u2122' in position 170

    还是中文字符的问题, 解决方法见链接:http://www.oracle.com/technetwork/articles/tuininga-cx-oracle-084866.html import ...

  9. range(start,end,step)与xrange(start, stop[, step])

    >>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> xrange(10) xrange(10) >>> ...

  10. Robot Test Framework + Selenium 的几个坑

    现有的webtest是基于Robot 和 Selenium 来写的,没出问题的时候还挺好的,出了问题想debug介个麻烦啊(也可能是姿势不对), 特罗列如下,如有不对,求指正,指导. 1. RIDE ...