当前位置: 首页 > news >正文

【CMake】第1篇 了解 CMake 构建源码输出 Hello world(初学者必备)

目录

1、CMake

 2、CMake 简单使用

2.1 创建一个main.cpp文件

 2.2 创建CMakeLists.txt文件

2.3 执行 cmake .

 2.4 执行 make

 2.5 运行 main 可执行文件

3、使用 build 文件夹存放构建后的文件


1、CMake

Cmake 是一个跨平台、开源的构建系统。

查看CMake版本:

cmake --version

 2、CMake 简单使用

2.1 创建一个main.cpp文件

首先写一个简单的main.cpp文件:

#include <iostream>

int main()
{
   std::cout << "Hello world!" << std::endl;
   return 0;
}

 2.2 创建CMakeLists.txt文件

CMakeLists.txt文件内容如下:

cmake_minimum_required(VERSION 2.8)
project(test)
add_executable(main main.cpp)
  • cmake_minimum_required(VERSION 2.8)

指定cmake的最小版本。

  • project

设置项目名称。

  • add_executable(main main.cpp)

生成可执行文件的名字,使用的源码为main.cpp。

2.3 执行 cmake .

cmake .

 生成 Makefile 文件:

 2.4 执行 make

执行make生成可执行文件:

make

 2.5 运行 main 可执行文件

./main

如果在源码与CMakeLists.txt下执行上述命令的话,构建的文件会与源码放在一起,后期维护不方便。

因此可以通过创建一个build的文件夹,专门用来存放cmake构建后的文件。

3、使用 build 文件夹存放构建后的文件

创建文件夹:

mkdir build

 进入 build 文件夹:

cd build

执行命令:

cmake ..

 执行命令 make:

make

 执行可执行文件 main:

相关文章:

  • 机器人+人工智能课程需求和就业趋势-2022-
  • 操作表单(验证)
  • 品牌线上打假,应防微杜渐
  • 现代信号处理——参数估计理论(线性均方估计)
  • Haproxy搭建http负载均衡
  • 神经网络在控制中的应用,神经元网络控制的作用
  • 指针难点——数组指针、指针数组、函数指针、指针函数详解
  • 多媒体信息处理学习笔记-3. Feature Indexing and Retrieval
  • 约束(constraint)
  • 「运维有小邓」SIEM解决方案数据安全分析组件
  • 离散数学22_第8章图__握手定理
  • git解决冲突会带上另外一方不相关代码
  • Java——聊聊JUC中的CAS原理
  • 丁鹿学堂:前端代码优化之健壮性
  • 【C++】类和对象(上)
  • [case10]使用RSQL实现端到端的动态查询
  • 30天自制操作系统-2
  • Android Studio:GIT提交项目到远程仓库
  • AWS实战 - 利用IAM对S3做访问控制
  • PHP 7 修改了什么呢 -- 2
  • React系列之 Redux 架构模式
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • socket.io+express实现聊天室的思考(三)
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • 服务器从安装到部署全过程(二)
  • 讲清楚之javascript作用域
  • 微服务入门【系列视频课程】
  • 微信公众号开发小记——5.python微信红包
  • 协程
  • 一个JAVA程序员成长之路分享
  • 06-01 点餐小程序前台界面搭建
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​业务双活的数据切换思路设计(下)
  • #100天计划# 2013年9月29日
  • #include<初见C语言之指针(5)>
  • #图像处理
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (第61天)多租户架构(CDB/PDB)
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • (转)用.Net的File控件上传文件的解决方案
  • **PHP分步表单提交思路(分页表单提交)
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .dwp和.webpart的区别
  • .NET Micro Framework 4.2 beta 源码探析
  • .net6+aspose.words导出word并转pdf
  • .NET面试题(二)
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • @private @protected @public