CMake学习(一)
CMake学习(一)
1、简介

CMake是一个强大的软件构建系统,可以用简单的语句来描述所有平台的安装(编译过程)
可以编译源代码、制作程序库、产生适配器(wrapper)、还可以用任意的顺序建构执行档
2、构建基础项目
最基础的 CMake 项目是由单个源代码文件构建的可执行文件
对于这种简单的需求,我们所需要用到的仅仅是一个名为CMakeLists.txt的文件以及三条命令
cmake_minimum_required()
任何项目最顶层的CMakeLists.txt文件必须以cmake_minimum_required()命令开头,用来指定最小支持的CMake版本
这将建立策略设置,并确保随后编写的CMake配置能够在兼容的CMake版本下执行
project()
如果想要启动一个项目,那么就使用project()来设置项目的名称
每个项目都需要调用该命令,并且应在 make_minimum_required() 之后尽快调用
除此以外,该命令还可用于指定其他项目级信息,如语言或版本号
add_executable()
add_executable() 命令告诉 CMake 使用指定的源代码文件创建一个可执行文件
2.1、文件配置
直接创建一个目录cmake_demos,里面只放两个文件,一个是源代码文件main.cpp,另一个是CMake的配置文件CMakeLists.txt

main.cpp文件中是简单的C++代码
#include<iostream>
int main()
{
std::cout << "Hello, CMake!" << std::endl;
}
而CMakeLists.txt依照以上内容进行一些项目配置
# 指定最低支持的CMake版本
cmake_minimum_required(VERSION 3.10)
# 设置项目名称
project(Beginner)
# 将指定源文件编译成可执行文件
add_executable(App main.cpp)
简单看下我们的配置,首先,声明了支持的CMake版本最低支持到3.10,因此低于该版本的CMake无法执行构建任务
后面紧接着声明了项目名称,此时项目名称会被存储到PROJECT_NAME变量当中,如果当前是顶层的CMakeLists.txt,还会存储到CMAKE_PROJECT_NAME变量中
最后一句则是表示根据当前目录下的main.cpp源文件生成名为App的可执行文件
2.2、构建执行
理解了配置的含义,接下来开始正式进行项目的构建吧~~
首先,在当前目录创建一个build目录,之后构建的文件会放到这里面

然后打开终端,导航到build目录下

执行cmake ..,意思是对上级目录里的内容进行项目配置,生成一个本地的构建系统

此时,build目录下会多出一大堆东西

然后,是真正的构建环节,根据配置对项目进行编译链接,执行cmake --build .命令,基于当前目录生成的内容进行构建,并生成可执行文件

此时,可执行文件会出现在Debug目录下

执行App.exe,正是main.cpp里面我们编写的功能

此时,一个最小型的CMake项目就已经构建完成了
CMake学习(一)的更多相关文章
- CMake学习(1)---简单程序与库
cmake是linux平台下重要的工具,可以方便的组织makefile.之前一直在windows平台下进行软件开发,在vs2010的IDE里,只要一点run程序就能跑出结果.但是程序的编译并没有那么简 ...
- cmake学习笔记(五)
在cmake 学习笔记(三) 中简单学习了 find_package 的 model 模式,在cmake 学习笔记(四)中了解一个CMakeCache相关的东西.但靠这些知识还是不能看懂PySide使 ...
- cmake 学习笔记(三)
转自:http://blog.csdn.net/dbzhang800/article/details/6329314 接前面的 Cmake学习笔记(一) 与 Cmake学习笔记(二) 继续学习 cma ...
- cmake 学习笔记(二)
在 Cmake学习笔记一 中通过一串小例子简单学习了cmake 的使用方式. 这次应该简单看看语法和常用的命令了. 简单的语法 注释 # 我是注释 命令语法 COMMAND(参数1 参数2 ...) ...
- CMake学习
CMake学习 本篇分享一下有关CMake的一些学习心得以及相关使用. 作者:AlphaGL.版权所有,欢迎保留原文链接进行转载 :) 本文目录如下: 1.CMake介绍 2.CMake安装与使用 2 ...
- cmake 学习笔记(三) (转)
接前面的 Cmake学习笔记(一) 与 Cmake学习笔记(二) 继续学习 cmake 的使用. 学习一下cmake的 finder. finder是神马东西? 当编译一个需要使用第三方库的软件时,我 ...
- CMake学习笔记四:usb_cam的CMakeLists解析
最近在学习cmake,在完整看了<cmake实践>一书后,跟着书上例程敲了跑了一遍,也写了几篇相关读书笔记,算是勉强基本入门了.所以找了usb_cam软件包的CMakeLists.txt来 ...
- cmake学习资料收集
CMake 学习笔记 : https://www.jianshu.com/p/c417e4ab8b30
- cmake 学习笔记(六)
希望这是现阶段阻碍阅读shiboken和PySide源码的涉及cmake的最后一个障碍 ^ _^ 学习 cmake 的单元测试部分 ctest. 简单使用 最简单的使用ctest的方法,就是在 CMa ...
- cmake 学习笔记(四)
接前面的一二三,学习一下 CMakeCache.txt 相关的东西. CMakeCache.txt 可以将其想象成一个配置文件(在Unix环境下,我们可以认为它等价于传递给configure的参数). ...
随机推荐
- SQLServer如何监控阻塞会话
一.查询阻塞和被阻塞的会话 SELECT r.session_id AS [Blocked Session ID], r.blocking_session_id AS [Blocking Sessio ...
- numpy基础--ndarray(一种多维数组对象)
NumPy基本介绍 NumPy(Numerical Python)是高性能科学计算和数据分析的基础包.其提供了以下基本功能: ndarray:一种具有矢量算术运算和复杂广播能力的快速且节省空间的多维数 ...
- BOM弹窗 滚动条
// window.alert('弹出内容') 警告框 // window.prompt('弹出内容') 输入框 // 以 字符串 形式 存储输入 ...
- vue指令 常用指令 v-cloak指令
指令(Directives)就是vue给html标签提供的一些自定义属性,这样属性都是带有 v- 前缀的特殊属性.指令特性的值预期是单个JS表达式(v-for是例外情况).指令的职责是,当表达式的值改 ...
- C#.NET 国密SM4加密解密 CBC ECB 2种模式
注意点: 1.加密时,明文转 byte[] 时,不要用 Encoding.Default,一定要指定编码,如:UTF-8. 解密时,解出的 byte[] 转 string 同样要指定相同的编码. 2. ...
- JavaScript通过递归实现深拷贝
思路 首先是用Object.prototype.toString.call(obj)来得到传入的值的类型,如果是几个基本类型,则直接返回值就可以了 如果是引用类型,则通过深拷贝函数递归进行再次拷贝. ...
- fs.1.10 ON rockeylinux8 dockerfile模式
概述 freeswitch是一款简单好用的VOIP开源软交换平台. rockeylinux8 docker上编译安装fs.1.10的流程记录,本文使用dockerfile模式. 环境 docker e ...
- Niagara 物联网技术基础应用(文章修复中,不定时更新)
新手指南 前言 鉴于市面上有关Niagara物联网技术资料较少,笔者结合自生参加竞赛的经历编写此指南,该指南旨在让新手快速上手Niagara workbench 主要分以下几个模块讲解: 物联网软件平 ...
- Playbook条件语句
目录 Playbook条件语句 1. when的基本使用 1.1 when的基本示例 1.2比较运算符 1.3 比较运算符示例 1.4 逻辑运算符 1.5 逻辑运算符示例 2. 条件判断与block ...
- python globals()[]将字符串转化类,并通过反射执行方法
背景: 通过关键字设计ui自动化框架,将测试用例及其步骤存放到excel文件:其中步骤中包含了封装好的关键字方法,如打开浏览器.输入页面操作等,关键字保存的内容:具体类实例.方法 通过excel获取到 ...