为了更好的代码管理,选择一款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入门实践的更多相关文章

  1. 分布式学习系列【dubbo入门实践】

    分布式学习系列[dubbo入门实践] dubbo架构 组成部分:provider,consumer,registry,monitor: provider,consumer注册,订阅类似于消息队列的注册 ...

  2. sass、less和stylus的安装使用和入门实践

    刚 开始的时候,说实话,我很反感使用css预处理器这种新玩意的,因为其中涉及到了编程的东西,私以为很复杂,而且考虑到项目不是一天能够完成的,也很少是 一个人完成的,对于这种团队的项目开发,前端实践用c ...

  3. CMake 入门实战 | HaHack

    CMake 入门实战 | HaHack undefined

  4. CMake入门(二)

    CMake入门(二) 最后更新日期:2014-04-25 by kagula 阅读前提:<CMake入门(一)>.Linux的基本操作 环境: Windows 8.1 64bit英文版.V ...

  5. Django入门实践(三)

    Django入门实践(三) Django简单应用 前面简单示例说明了views和Template的工作过程,但是Django最核心的是App,涉及到App则会和Model(数据库)打交道.下面举的例子 ...

  6. Django入门实践(二)

    Django入门实践(二) Django模板简单实例 上篇中将html写在了views中,这种混合方式(指Template和views混在一起)不适合大型开发,而且代码不易管理和维护,下面就用Djan ...

  7. Django入门实践(一)

    Django入门实践(一) Django编程思路+入门 认识Django有一个多月了,我觉得学习Django应该先理清它的编程思路.它是典型的MVC框架(在Django里也称MTV),我觉得Djang ...

  8. 全文搜索引擎Elasticsearch入门实践

    全文搜索引擎Elasticsearch入门实践 感谢阮一峰的网络日志全文搜索引擎 Elasticsearch 入门教程 安装 首先需要依赖Java环境.Elasticsearch官网https://w ...

  9. CMake入门

    CMake入门 CMake是一个跨平台的安装编译工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似 ...

随机推荐

  1. Centos6优化系统服务脚本

    #!/bin/bash SysVer=`cat /etc/redhat-release | awk -F'release' '{print $2}' | awk -F'[ .]+' '{print $ ...

  2. cogs 547:[HAOI2011] 防线修建

    ★★★☆   输入文件:defense.in   输出文件:defense.out   简单对比 时间限制:1 s   内存限制:128 MB 题目描述: 近来A国和B国的矛盾激化,为了预防不测,A国 ...

  3. linux一键安装php脚本

    #!/bin/sh echo "----------------------------------start install php --------------------------- ...

  4. C#之多线程

    多线程在C#中使用得非常频繁,线程之间的充分利用显得尤为重要,一般的写法都是得不到充分利用资源,本人针对多线程写了一种方法,可以充分利用资源,保证每次同时启动10条线程,现在执行完马上再启动一条,总之 ...

  5. RSA非对称加密算法

    基本定义: RSA公开密钥密码体制.所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制.在公开密钥密码体制中,加密密钥(即公开密钥 ...

  6. java23种设计模式之三: 适配器模式

    一.适配器模式  就是个通过一个中间件转化,可以将不匹配的两件事整合到一起,把不匹配变的匹配. 二.适配器分类 1.类适配器  2.对象适配器 三. 适配器的3种组成 1.类适配器组成 1.2个接口 ...

  7. 拉取代码过程中遇到的:post install error,please remove node_modules before retry!

    这是在git → clone 之后,安装npm intall时出现的错误,完整错误提示如下: 解决: // 1.先删除node_modules这个文件 $ rm -rf node_modules/ / ...

  8. session.资料

    1. HttpSessionListener https://www.cnblogs.com/diewufeixian/p/4221747.html 2. 3. 4. 5.

  9. C# ContentType: "application/json" 请求方式传json参数问题

    处理Http请求时遇到的ContentType为application/json方式,记录下这种Post请求方式下如何传json参数: var request = (HttpWebRequest)We ...

  10. 从零开始搭建webpack+react开发环境

    环境主要依赖版本 webpack@4.8.1 webpack-cli@2.1.3 webpack-dev-server@3.1.4 react@16.3.2 babel-core@6.26.3 bab ...