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

CMAKE介绍和使用(Windows平台)

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。

Windows平台

cmake工具的下载

cmake工具下载官网: Download | CMake

下载压缩包后解压,解压后的bin文件路径加到电脑系统环境变量中 

设置完成后打开命令行(cmd),输入命令cmake -version可查看版本号

编译和执行

在windows 平台下使用 CMake 生成 Makefile 并编译的流程如下:

    1. 写 CMake 配置文件 CMakeLists.txt 。
    2. 执行命令: cmake PATH -G "MinGW Makefiles"  使用cmake生成Makefile文件( PATH 是 CMakeLists.txt 所在的目录)
    3. 执行命令:cmake --build PTAH  使用 cmake 命令进行编译生成exe可执行程序( PATH 是 CMakeLists.txt 所在的目录)

入门案例:

假设测试代码是如下结构:

func.c的示例代码:

#include <stdio.h>int add(int a, int b)
{int c = a + b;return c;
}

main.c的示例代码:

#include <stdio.h>
#include <stdlib.h>
#include "func.h"int main(int argc, char* argv[])
{if(argc < 3){printf("Usage: %s input error\n", argv[0]);return -1;}int a = atoi(argv[1]);int b = atoi(argv[2]);int sum = add(a,b);printf("%d\n", sum);return 0;
}

 CMakeList.txt的示例代码:

cmake_minimum_required (VERSION 3.8)project(demo)include_directories(./)aux_source_directory(. DIR_SRCS)add_executable(Demo ${DIR_SRCS})#test
enable_testing()add_test(test_run Demo 2 3)add_test(test_usage Demo)
set_tests_properties(test_usage PROPERTIES PASS_REGULAR_EXPRESSION "Usage")add_test(test Demo 3 3)
set_tests_properties(test PROPERTIES PASS_REGULAR_EXPRESSION "6")

cmake生成Makefile文件

  cmake 命令进行编译生成exe可执行程序Demo.exe

执行程序

ctest执行自动测试

相关文章:

CMAKE介绍和使用(Windows平台)

CMake是一个跨平台的安装&#xff08;编译&#xff09;工具&#xff0c;可以用简单的语句来描述所有平台的安装(编译过程)。 Windows平台 cmake工具的下载 cmake工具下载官网&#xff1a; Download | CMake 下载压缩包后解压&#xff0c;解压后的bin文件路径加到电脑系统环境…...

宝塔面板webhook 使用教程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 背景1、介绍一下Webhook2、使用步骤1.安装git2.安装WebHook3.添加WebHook4.配置git 钩子 &#xff08;码云示例&#xff09;5.私有项目还需要做以下操作 背景 最近…...

大模型时代入场级技能:提示词工程!中文教程来啦

写出优质的提示词&#xff0c;让 AI 生成惊艳的图文作品。——这就是如今年薪百万仍一人难求的提示词工程师们在解决的问题。大语言模型时代下&#xff0c;不断涌现出众多让人瞳孔地震的绘画、拍案叫绝的文案&#xff0c;它们的创作者并非传统定义的画家、作家&#xff0c;而是…...

template和component自定义组件之间的区别

在小程序中自定义组件 component 方式和组件模板 template 2种方式实现页面组件化。 一、component自定义组件 1.概念 自定义组件是指可以被多个页面使用的组件&#xff0c;可以在小程序中多次复用。在开发中可以将一个页面中的代码和样式抽象出来&#xff0c;然后创建一个自定…...

如何提高读取Excel的效率,NPOI多线程读取详解

如何提高读取Excel的效率 当Excel中的数据量大,达到几十万条,使用Excel文件可能会变得很慢. 以下是一些建议来提高读取Excel的效率: 1. 选择合适的Excel库 在读取Excel文件时, 选择合适的Excel库可以显著提高效率. 一些常用的Excel库包括: EPPlus: 用于读写Excel文件的开源…...

【算法】【算法杂谈】从1到n的自然数组中,1出现的次数如何计算?

目录 前言问题介绍解决方案代码编写java语言版本c语言版本c语言版本 思考感悟写在最后 前言 当前所有算法都使用测试用例运行过&#xff0c;但是不保证100%的测试用例&#xff0c;如果存在问题务必联系批评指正~ 在此感谢左大神让我对算法有了新的感悟认识&#xff01; 问题介…...

日常笔记-Flutter build命令参数

Flutter build命令参数 Flutter build命令参数 Flutter build命令参数 flutter build apk 命令支持以下参数&#xff1a; --debug&#xff1a;构建一个调试版本的 APK。--release&#xff1a;构建一个发布版本的 APK。--target-platform<value>&#xff1a;指定目标平台…...

【利用AI让知识体系化】入门Koa框架

思维导图 文章目录 思维导图一、介绍Koa什么是KoaKoa的历史Koa的特点 二、基本使用安装KoaHello World中间件路由错误处理 三、进阶使用静态资源管理Session管理文件上传表单处理HTTPS支持 四、Koa中间件中间件的概念Koa的洋葱模型常用中间件的介绍自定义中间件的编写 五、异步…...

边缘计算:数据采集、清洗与处理的新时代

近日&#xff0c;又一家边缘计算企业成功获得了融资。这家公司名为DeepWalk&#xff0c;致力于提供边缘计算技术&#xff0c;为企业提供安全、快速的数据采集、清洗和处理解决方案。其融资将用于产品研发和市场推广。 DeepWalk成立于2018年&#xff0c;总部位于美国硅谷&#x…...

分区计量管理项目应用

为充分发挥分区计量管理项目在漏损控制的效用&#xff0c;应构建科学完备的应用体系&#xff0c;如下图 分区计量应用体系 1. 基于水量平衡分析的漏损现状评估方法 分区计量管理项目通过监控分析DMA 分区内流量、压力、水质、大用户用水等情况&#xff0c;结合营业抄收系统的营…...

LayoutInflater中inflate()参数解析

1、关于LayoutInflater&#xff0c;它是如何通过 inflate 方法获取到具体View的&#xff1f; 获得LayoutInflater实例的方式有以下三种&#xff1a; LayoutInflater inflater getLayoutInflater();LayoutInflater inflater LayoutInflater.from(this);LayoutInflater infla…...

星河案例ㅣ中国电信 X 冲量在线:基于智算中心的隐私计算应用实践

▏摘要 中国电信是中国三大运营商之一&#xff0c;为响应国家“东数西算”工程的全新数据中心形态&#xff0c;中国电信引入隐私计算平台&#xff0c;对内实现数据确权跟踪、对外实现数据共享交易&#xff0c;盘活中国电信分布在全国不同区域的数据资源和算力资源&#xff0c;…...

开发笔记之:JAVA读取QT QDataStream输出

1.背景 之前的标题是【JAVA反序列化QT序列化内容】&#xff0c;觉得太大太绕&#xff0c;最后改为现在的标题。  本篇内容是对用JAVA解析QT&#xff08;用的是QDataSteam&#xff09;所输出&#xff08;序列化&#xff09;的内容的小结。 本文涉及类型包括&#xff1a;QString…...

Docker入门实战---修改Docker镜像源

前言 现在大部分互联网公司在实施项目时几乎都会以微服务架构进行落地&#xff0c;那么微服务一旦多了之后就会面临一个如何友好的治理的问题&#xff0c;本人不会重点介绍治理的问题&#xff0c;而是会简单就治理的其中一个环节服务部署运维的问题进行介绍&#xff0c;服务部…...

Java构建高并发高可用的电商平台(静态架构蓝图之剖析架构)

静态架构蓝图 整个架构是分层的分布式的架构&#xff0c;纵向包括CDN&#xff0c;负载均衡/反向代理&#xff0c;web应用&#xff0c;业务层&#xff0c;基础服务层&#xff0c;数据存储层。水平方向包括对整个平台的配置管理部署和监控。 剖析架构 1. CDN CDN系统能够实时…...

SpringBoot核心运行原理解析之------@Conditional条件注解

在SpringBoot核心运行原理解析之------@EnableAutoConfiguration文档中我们完成了自动配置类的读取和筛选,在这个过程中已经涉及了像@ConditionalOnClass这样的条件注解。打开每个自动配置类,都会看到@Conditional或其衍生的条件注解,本节我们来认识下@Conditional注解。 认…...

systemverilog 001 内建数据类型logic

Verilog 有两种基本数据类型,reg 和wire ,都是4值逻辑 0 1 x z,默认值是x。 reg[7:0] m 为无符号 Integer 为有符号32位 time为64位无符号 real为浮点数 systemverilog新引进了logic,logic既可以作为变量(reg功能),也可以作为线网功能(…...

Flink Kafka-Source

文章目录 Kafka Source1. 使用方法2. Topic / Partition 订阅3. 消息解析4. 起始消费位点5. 有界 / 无界模式6. 其他属性7. 动态分区检查8. 事件时间和水印9. 空闲10. 消费位点提交11. 监控12. 安全 Apache Kafka 连接器 Flink 提供了 Apache Kafka 连接器使用精确一次&#xf…...

VoxelNeXt:用于3D检测和跟踪的纯稀疏体素网络

VoxelNeXt:Fully Sparse VoxelNet for 3D Object Detection and Tracking 目前自动驾驶场景的3D检测框架大多依赖于dense head&#xff0c;而3D点云数据本身是稀疏的&#xff0c;这无疑是一种低效和浪费计算量的做法。我们提出了一种纯稀疏的3D 检测框架 VoxelNeXt。该方法可以…...

必须了解的内存屏障

目录 一&#xff0c;内存屏障1&#xff0c;概念2&#xff0c;内存屏障的效果3&#xff0c;cpu中的内存屏障 二&#xff0c;JVM中提供的四类内存屏障指令三&#xff0c;volatile 特性1&#xff0c;保证内存可见性定义2&#xff0c;禁止指令重排序3&#xff0c;不保证原子性 一&a…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...