CMake实战(一)

简介: CMake和Autotools一样,都是项目构建工具。可以简单理解为,帮助我们生成Makefile,方便编译。

前言

CMake和Autotools一样,都是项目构建工具。可以简单理解为,帮助我们生成Makefile,方便编译。


使用实例

(1) 创建main.c/hello.c/hello.h文件,内容如下:

//hello.c#include<stdio.h>#include "hello.h"intprintHello(void)
{
printf("Hello,World\n");
}
//hello.h#ifndef _HELLO_H#define _HELLO_HintprintHello(void);
#endif
//main.c#include<stdio.h>#include "hello.h"intmain(void)
{
printHello();
return0;
}

(2) 创建CMakeLists.txt, 内容如下:

#cmake最低版本需求,不加入此行会受到警告信息CMAKE_MINIMUM_REQUIRED(VERSION2.6)
PROJECT(HELLO) #项目名称#把当前目录(.)下所有源文件加入变量SRC_LISTAUX_SOURCE_DIRECTORY(. SRC_LIST)
#生成应用程序 helloADD_EXECUTABLE(hello${SRC_LIST})

CMAKE_MINIMUM_REQUIRED: 限定了 CMake 的版本

PROJECT: 指定项目名

AUX_SOURCE_DIRECTORY: 添加源文件列表

ADD_EXECUTABLE: 生成应用程序


(3) 创建build目录

mkdirbuild

目录结构如下:

20210204190358231.png

创建build目录是为了让一些中间文件放到该目录,这样不会让目录很乱,当然也可以省略就是了。


(4) 使用cmake构建项目

cdbuildcmake ..     // ..表示上一个目录

如果没有安装cmake,使用下面命令安装:

sudoapt-getinstallcmake

20210204190516752.jpg

执行成功后会生成Makefile文件

20210204190549359.jpg


(5) 编译生成可执行文件

make

20210204190629907.jpg


相关文章
|
前端开发 JavaScript API
【第14期】一文读懂前端NueJS框架
【第14期】一文读懂前端NueJS框架
679 0
|
JSON Java API
深拷贝、浅拷贝
深拷贝、浅拷贝
324 0
|
数据库
Layui入门&动态树&动态选项卡&用户增加&修改&删除&(一)
Layui入门&动态树&动态选项卡&用户增加&修改&删除&
248 0
|
10月前
|
人工智能 缓存 算法
轻创优选视频号爆单系统的开发
电商运营和自动化技术的综合项目,旨在通过高效的内容分发、精准的用户触达和智能化的运营策略,实现商品快速销售和流量变现
|
缓存 Cloud Native 区块链
重塑链上数据索引,Chainbase 云原生 Subgraph 解析
Subgraph 是 The Graph 去中心化应用索引协议的具体实现, 能为各个智能合约创建索引引擎,提供 dataset 数据集供开发者快速查询使用。目前,Chainbase 正式上线并托管的核心 dataset subgraph 数量已经超过 100+。
902 0
重塑链上数据索引,Chainbase 云原生 Subgraph 解析
基于模糊PID控制器的的无刷直流电机速度控制simulink建模与仿真
本课题基于模糊PID控制器对无刷直流电机(BLDCM)进行速度控制的Simulink建模与仿真。该系统融合了传统PID控制与模糊逻辑的优势,提高了BLDCM的速度动态响应、抗干扰能力和稳态精度。通过模糊化、模糊推理和解模糊等步骤,动态调整PID参数,实现了对电机转速的精确控制。适用于多种工况下的BLDCM速度控制应用。
【异常解决】postman请求提示Full authentication is required to access this resource
【异常解决】postman请求提示Full authentication is required to access this resource
946 0
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-1
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
安全 PHP
【PHP开发专栏】PHP文件上传与下载实现
【4月更文挑战第30天】本文介绍了在PHP中实现文件上传和下载的详细步骤。文件上传通过`$_FILES`全局数组处理,包括设置HTML表单、PHP脚本处理上传及安全性考虑。文件下载则可使用`readfile()`、`fpassthru()`或`file_get_contents()`函数,同时关注安全问题,如防止目录遍历漏洞。文中还提供了一个简单的图片分享网站案例,演示了上传和下载功能的集成。
283 1
|
人工智能 算法 Cloud Native
向量数据库小白必关注的“扫盲贴”来啦
自从ChatGPT问世以来,大语言模型受到广泛关注。但大模型更新频率低且不擅长垂直领域知识,向量数据库恰好可以与之互补,通过Retrieval Plugin为大模型和企业私有数据构建了一座桥梁,成为数据面向大模型的切入口。不过,你真的了解向量吗?什么又是向量数据库呢?向量检索的原理又是什么呢?向量爱好者们速速上车,跟着小编一起开启“向量探索之旅”吧!
4901 4
向量数据库小白必关注的“扫盲贴”来啦