*介绍“CMake是个开源的跨平台自动化建构系统,它用配置文件控制建构过程(build process)的方式和Unix的Make相似,只是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。
*上给的答案是
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的更多相关文章
-
windows下CMake使用图文手册 Part 3
例子3: 构建动态库(.dll) 静态库(.lib) 采用和例子2一样的文件,但删除了main.cpp E:. │ CMakeLists.txt │ ...
-
windows下CMake使用图文手册 Part 2
例子2:有目录的项目 我现在有个文件夹ProjectDate,有如下文件结构 E:. │ CMakeLists.txt │ ├─include │ Date.h │ └─src ...
-
windows下CMake使用图文手册 Part 4
例子4:链接静态库(.lib) 例子3里面我们构建了date.lib, 这个例子里我们调用这个库. 前提: date.h的头文件在 E:\Playground\CMakeExamples\DateLi ...
-
Windows下CMake编译安装OpenCV
Windows下CMake编译安装OpenCV 这是一个面向新手的在windows上运进opencv, helloword的教程. 在这里我们使用vs2019来编译opencv, 并运行一个hello ...
-
在Windows下编译ffmpeg完全手册
本文的内容几乎全部来自于FFmpeg on Windows,但是由于国内的网络*,很难访问这个域名下的内容,因此我一方面按照我自己的理解和实践做了翻译,另一方面也是为了能提供一个方便的参考方法. 注 ...
-
[转]在Windows下编译ffmpeg完全手册
本文的内容几乎全部来自于FFmpeg on Windows,但是由于国内的网络*,很难访问这个域名下的内容,因此我一方面按照我自己的理解和实践做了翻译,另一方面也是为了能提供一个方便的参考方法. 注 ...
-
windows下安装Mysql—图文详解
mysql安装过程及注意事项: 1.1. 下载: 我下载的是64位系统的zip包: 下载地址:https://dev.mysql.com/downloads/mysql/ 下载zip的包: 下载后解压 ...
-
windows下安装Mysql(图文详解)
博客园 | 首页 | 新随笔 | 联系 | 订阅 | 管理 mysql安装过程及注意事项: 1.1. 下载: 我下载的是64位系统的zip包: 下载地址:https://dev.mysql.com ...
-
Windows下C++/Fortran调用.exe可执行文件
目录 软件环境 Windows下CMake编译配置 设置项目的generator Command Line CMake GUI PreLoad.cmake 设置make 示例程序 CMake 设置Fo ...
随机推荐
-
JQuery选择器JQuery 事件
JQuery 元素选择器 jQuery 使用 CSS 选择器来选取 HTML 元素. $("p") 选取 <p> 元素. $("p.intro") ...
-
MySQL学习笔记 -- 数据表的基本操作
数据库是一个可以存放数据库对象的容器,数据库对象包括:表.视图.存储过程.函数.触发器.事件.其中,表是数据库最基本的元素,是其他数据库对象的前提条件. 表中的一列称为一个字段,一行称为一条记录. 1 ...
-
玩KVM
按照网上的一篇博客玩KVM,结果wifi上不了网,上不了网! 把br0下线就好了! 呀------ 11月16日,今天发现kvm卡成屎可能是和kvm内存使用率为0相关,虚拟机中的内存显示内存确实是我配 ...
-
empty()与remove([expr])的区别.转
jquery之empty()与remove()区别 要用到移除指定元素的时候,发现empty()与remove([expr])都可以用来实现.可仔细观察效果的话就可以发现.empty()是只移除了 ...
-
Bash On Windows的学习
Bash On Windows的学习 Bash On Windows的卸载 删除软件和设置:在 cmd 运行lxrun /uninstall 删除所有文件:在cmd中运行lxrun /uninstal ...
-
python 3.3.3 字面量,正则,反斜杠和原始字符串
两个不起眼但是比较重要的设定 Python str类型的字面量解释器 当反斜杠及其紧接字符无法构成一个具有特殊含义的序列('recognized escape sequences')时,Python选 ...
-
SharePoint Framework 在web部件中使用已存在的JavaScript库 - 捆绑打包和外部引用
博客地址:http://blog.csdn.net/FoxDave 在构建SPFx客户端web部件时,你可以使用公网已有的JavaScript库来构建强大的解决方案.但是在使用的时候你需要考虑你引用的 ...
-
COM口总是有惊叹号怎么办
现在用win8或者win8.1的人越来越多,搞开发的COM口是离不开的我们用转串口芯片时总会出现COM口有惊叹号的情况,这样我们的设备是无法正常使用的,那要怎么办呢? 方法: 想改成上图这样没有惊叹号 ...
-
$(";).each 和$.each
$(").each 这个是遍历dom树的,遍历数组的会报not afunction
-
string format 格式化小数位
String具体的格式化数据的方法 int a = 12345678;格式为sring输出Label1.Text = string.Format("asdfadsf{0}adsfasdf&q ...