CMake入门实践
为了更好的代码管理,选择一款make工具非常重要,cmake取百家之长,现在在github上已经是工程管理的常客了,最大的优势是跨平台。本文将避开理论,直接教你如何在windows和linux上实现cmake的代码管理。
开始之前
cmake 的安装,这是必须的,不需要我教了哈。
Windows和linux系统都安装起来。
让我们直接开始
先手撸一个main.cpp
#include <iostream>
int main(int argc, char const *argv[])
{
/* code */
std::cout << "Hello CMake World "<<std::endl;
return 0;
}
再码起一个cmake的脚本文件,统一命名CMakeLists.txt,内容如下:
cmake_minimum_required(VERSION 3.10.2)
add_executable(Main main.cpp)
- 第一句话是cmake的最小版本需求,
- 第二句话则说明了最后的执行文件的名称,以及需要包含的cpp文件。
main.cpp 和CMakeLists.txt放在同一个目录下即可。
两个文件完成后,恭喜你,代码版本可以发布了,你成功完成了代码的全部工作。比如你需要提交到github上,丢这两个文件即可。这些代码,既支持linux也支持Windows。
等等,还需要什么呢?对,编译指导说明文档。那就接着看吧!
编译指导文档
先高大上地写上 how to build:
需要cmake,最低版本3.10.2
- linux下
先在代码文件夹下新建linux-build文件夹,然后在shell中执行
cd linux-build
cmake ../
make
./Main
- windows下
先在代码文件夹下新建win-build文件夹,然后在Windows终端执行:
cd win-build
cmake ../ -G "Visual Studio 9 2008"
MSBuild.exe Project.sln
./Debug/Main
分别完成以上四步,都可以看到结果:
Hello CMake World
解释说明
一切看来,似乎简单的不像话,不论是linux还是Windows的工程文件,cmake都能接管,只需要一个简单的CMakeLists.txt文件即可。
- 在linux下,通过cmake完成makefile文件的自动化生成,通过make编译工程,一切都很完美。
- window下似乎还多了一些配置,这里我在cmake时配置了-G参数,使用的Vs2008,使用其他VS版本可以参照填写,执行后生成了工程文件Project.sln,这个是默认的名字,因为我没有做配置说明,然后通过msbuild.exe 编译该工程,默认是debug的,msbuild也有其编译选项,后续有机会再说明。
以上,非常简单的介绍了cmake的跨平台特性,不论是管理Linux还是Windows平台的代码,都非常合适,特别是跨平台编程时,cmake可以精简很多的工作,后续会继续深入的学习cmake,同时发博文分享学习过程。
CMake入门实践的更多相关文章
- 分布式学习系列【dubbo入门实践】
分布式学习系列[dubbo入门实践] dubbo架构 组成部分:provider,consumer,registry,monitor: provider,consumer注册,订阅类似于消息队列的注册 ...
- sass、less和stylus的安装使用和入门实践
刚 开始的时候,说实话,我很反感使用css预处理器这种新玩意的,因为其中涉及到了编程的东西,私以为很复杂,而且考虑到项目不是一天能够完成的,也很少是 一个人完成的,对于这种团队的项目开发,前端实践用c ...
- CMake 入门实战 | HaHack
CMake 入门实战 | HaHack undefined
- CMake入门(二)
CMake入门(二) 最后更新日期:2014-04-25 by kagula 阅读前提:<CMake入门(一)>.Linux的基本操作 环境: Windows 8.1 64bit英文版.V ...
- Django入门实践(三)
Django入门实践(三) Django简单应用 前面简单示例说明了views和Template的工作过程,但是Django最核心的是App,涉及到App则会和Model(数据库)打交道.下面举的例子 ...
- Django入门实践(二)
Django入门实践(二) Django模板简单实例 上篇中将html写在了views中,这种混合方式(指Template和views混在一起)不适合大型开发,而且代码不易管理和维护,下面就用Djan ...
- Django入门实践(一)
Django入门实践(一) Django编程思路+入门 认识Django有一个多月了,我觉得学习Django应该先理清它的编程思路.它是典型的MVC框架(在Django里也称MTV),我觉得Djang ...
- 全文搜索引擎Elasticsearch入门实践
全文搜索引擎Elasticsearch入门实践 感谢阮一峰的网络日志全文搜索引擎 Elasticsearch 入门教程 安装 首先需要依赖Java环境.Elasticsearch官网https://w ...
- CMake入门
CMake入门 CMake是一个跨平台的安装编译工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似 ...
随机推荐
- Ubuntu16.04多个版本GCC编译器的安装和切换【转】
本文转载自:https://www.cnblogs.com/uestc-mm/p/7511063.html 这几天在配置交叉编译ARM开发板的linux内核的过程中碰到了很多问题,其中包括了GCC版本 ...
- Spring Boot 中yml配置文件
步骤一:yml格式 现在大家发现,在springboot里还是要用到配置文件的. 除了使用.properties外,springboot还支持 yml格式. 个人觉得yml格式的可读性和..prope ...
- Protocol Buffers数据传输及存储协议简单使用
我们知道Protocol Buffers是Google定义的一种跨语言.跨平台.可扩展的数据传输及存储的协议,因为将字段协议分别放在传输两端,传输数据中只包含数据本身,不需要包含字段说明,所以传输数据 ...
- 数据结构实习 - problem K 用前序中序建立二叉树并以层序遍历和后序遍历输出
用前序中序建立二叉树并以层序遍历和后序遍历输出 writer:pprp 实现过程主要是通过递归,进行分解得到结果 代码如下: #include <iostream> #include &l ...
- 04_Storm编程上手_WordCount集群模式运行
1. 要解决的问题:代码打包 前一篇的代码,在IDEA中通过maven工程创建,通过IDEA完成代码打包 1)File -> Project Structure 2) 选择Artifacts, ...
- 一个带展示的jsp上传控件模型
带展示上传控件的基本模型,无样式 jsp部分: <td> <form id="form1" enctype="multipart/form-data&q ...
- 用Hibernate框架把hql生成可执行的sql语句-Oracle方言
引言:为什么这样的需求,源自公司项目需要,公司的项目使用java的struts2+spring2.5+oracle中间件tuxedo,数据库用的是Oracle,但由于不直接连接数据库,用中间件处理的方 ...
- PHP中用下划线开头的含义
命名的规则 加一个为私有的 加两个一般都是系统默认的,系统预定义的,即所谓:=====================“魔术方法”与“魔术常量”=====================★PHP起止为 ...
- Uncaught SyntaxError: Unexpected end of input 突然报了这个错
最后排查:把 return true 注掉好了,接着在打开注释,依然不报错.最后不报错了.0.0 ~~~
- (转)SQL一次性插入大量数据
在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题.下面介绍SQL Server支持的两种批量 ...