CMAKE介绍和使用(Windows平台)

news2024/10/7 16:16:04

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执行自动测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/529465.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ANR基础篇 - 相关系统知识简介

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 文章目录 系列文章目录前言一、CPU相关知识1.CPU核心架构大小核架构 2.绑核3.锁频4.CPU状态 二、线程状态1.R…

自学黑客(网络安全)如何入门?收藏这篇就够了

前言&#xff1a; 趁着今天下班&#xff0c;我花了几个小时整理了下&#xff0c;非常不易&#xff0c;希望大家可以点赞收藏支持一波&#xff0c;谢谢。 我的经历&#xff1a; 我19年毕业&#xff0c;大学专业是物联网工程&#xff0c;我相信很多人在象牙塔里都很迷茫&#x…

阿里18k的外包能去吗?

有挺多测试员曾在BAT、网易这些大厂做过外包&#xff0c;想必大家也是非常关心此类问题&#xff0c;我就想介绍下“什么是外包&#xff1f;”&#xff0c;“外包公司的现状”&#xff0c;就“为什么这么多人鄙视外包测试岗&#xff1f;”、”阿里18K的外包测试岗能去吗&#xf…

适配器模式知多少

目录 目标 概述 实战 目标 熟悉适配器设计模式&#xff0c;了解适配器设计模式的使用场景、具体实现。 概述 一、结构型设计模式 结构型设计模式是设计模式的一种类型。它的关注点在于如何将对象和类组合成更大的结构。较为常见的结构型设计模式如&#xff1a;装饰者设计…

开源物联网平台和智能家居平台

开源物联网平台和智能家居平台 目 录 1、开源智能家居平台&#xff08;家庭自动化工具&#xff09; 1. Home Assistant2. openHAB3. Domoticz4. Calaos2、开源物联网平台 1. Thingsboard2. Kaa IoT Platform3. SiteWhere4. JetLinks5. Thinger.io 做者&#xff1a;晨星1032 1…

把握数据核心,A/B测试成就高效邮件营销新纪元

电子邮件营销是现代营销战略中的重要组成部分。但是收件人每天要收到大量的邮件&#xff0c;而确保你的电子邮件有效和吸引人是一件具有挑战性的事情。想要克服这个问题&#xff0c;提高电子邮件营销活动有效性是一个不错的方法。具体措施就是进行A/B测试&#xff01;在本文中&…

啥是CTF?新手如何入门CTF?

CTF是啥 CTF 是 Capture The Flag 的简称&#xff0c;中文咱们叫夺旗赛&#xff0c;其本意是西方的一种传统运动。在比赛上两军会互相争夺旗帜&#xff0c;当有一方的旗帜已被敌军夺取&#xff0c;就代表了那一方的战败。在信息安全领域的 CTF 是说&#xff0c;通过各种攻击手…

NIO简单入门笔记【一】 三大组件

前言&#xff1a; &#x1f44f;作者简介&#xff1a;我是笑霸final&#xff0c;一名热爱技术的在校学生。 &#x1f4dd;个人主页&#xff1a;个人主页1 || 笑霸final的主页2 &#x1f4d5;系列专栏 JAVA专栏 &#x1f4e7;如果文章知识点有错误的地方&#xff0c;请指正&…

Python 基础(十三):函数

❤️ 博客主页&#xff1a;水滴技术 &#x1f338; 订阅专栏&#xff1a;Python 入门核心技术 &#x1f680; 支持水滴&#xff1a;点赞&#x1f44d; 收藏⭐ 留言&#x1f4ac; 文章目录 一、创建函数二、调用函数三、向函数传递参数3.1、形参和实参3.2、多参函数3.3、参数的…

【C生万物】 指针和数组笔试题汇总 (上)

欢迎来到 Claffic 的博客 &#x1f49e;&#x1f49e;&#x1f49e; &#x1f449; 专栏&#xff1a;《C生万物 | 先来学C》&#x1f448; 前言&#xff1a; 在学习完初级和进级的指针之后&#xff0c;为了检验掌握程度&#xff0c;这里出一期指…

MYSQL 之 Redis配置与优化

&#xff08;一&#xff09;关系数据库和非关系数据库 关系库数据库Oracle &#xff0c;mysql &#xff0c;sql&#xff0c;server&#xff0c;microsoft Access &#xff0c;postgresql 以上数据库必须先建表在设计表的结构&#xff0c;然后存储的时侯按表的结构去存&#x…

微信小程序入门01-工具的下载安装及模板的安装

小程序开发现在已经有多种模式了&#xff0c;有使用uniapp开发的&#xff0c;使用微信开发者工具开发的&#xff0c;还有低代码工具也支持开发小程序的。 在众多开发模式中&#xff0c;使用官方开发者工具开发也是一种形式。本篇我们就介绍一下如何用微信开发者工具搭建小程序…

【MATLAB第32期】基于MATLAB的降维/全局敏感性分析/特征排序/数据处理分类问题MATLAB代码实现(持续更新)

【MATLAB第32期】基于MATLAB的降维/全局敏感性分析/特征排序/数据处理分类问题MATLAB代码实现(持续更新) 本文敏感性分析主要分析分类问题&#xff08;fisher、rf、arf、nca等&#xff09;。 一、降维方法&#xff08;分类&#xff09; 常见的降维方法&#xff1a; 常见的敏…

2023,8种必备Selenium编写自动化用例的技巧(建议收藏)

在开始自动化时&#xff0c;您可能会遇到各种可能包含在自动化代码中的方法&#xff0c;技术&#xff0c;框架和工具。有时&#xff0c;与提供更好的灵活性或解决问题的更好方法相比&#xff0c;这种多功能性导致代码更加复杂。在编写自动化代码时&#xff0c;重要的是我们能够…

Jangow

Jangow 1.环境准备 靶场地址&#xff1a;https://www.vulnhub.com/entry/jangow-101,754/下载好靶机之后直接使用VMware Workstation Pro虚拟机导入环境&#xff0c;启动即可&#xff0c;将网段设置为NAT模式攻击机&#xff1a;kali&#xff08;192.168.80.180&#xff09;靶…

【电厂用 多功能数码显示 HJY-F931B/D交流三相电压继电器JOSEF约瑟】

用途 HJY系列数字式交流电压继电器为瞬时动作特性&#xff0c;用于发电机&#xff0c;变压器&#xff0c;输电线路的继电保护装 置中作为过压或欠压的闭锁启动元件。 安装结构 导轨安装9&#xff0c;导轨安装E两种结构方式&#xff0c;具体尺寸请参考外型尺寸图。特点 (1). 采…

局域网内使用的多人协同编辑文档的软件哪个好?对比5款主流平台

支持局域网内多人协同编辑文档的软件或平台哪个好&#xff1f;PingCode 、Confluence 等知识库工具和腾讯文档、飞书文档等都支持多人协作编辑&#xff0c;怎么选&#xff1f;这是企业团队在找文档管理工具最常见的问题。 支持局域网内协同编辑的软件可以分为两个大类&#xf…

azkaban介绍

目录 为什么需要工作流调度系统 什么是azkaban azkaban适用场景 azkaban特点 常见的工作流调度系统 azkaban和Ooize特性对比 azkaban的架构 azkaban调度的任务有可能有那些类型 总结 为什么需要工作流调度系统 一个完整的大数据分析系统&#xff0c;必然由很多任务单…

基于显扬科技3D视觉相机的医疗试管分拣系统

行业现状&#xff1a; 医疗试管分拣是医疗行业中的一个重要环节&#xff0c;指将医疗实验室或生物技术研究中的试管按照一定的规则进行分拣&#xff0c;并对试管的类型、位置、数量等信息进行识别和管理。 随着医疗技术的不断发展和诊断治疗的精细化&#xff0c;医疗试管分拣…

Python之selenium关于Chrome驱动位置和闪退的问题

目录 一、Chromedriver放置的位置二、浏览器闪退 一、Chromedriver放置的位置 背景&#xff1a;之前由于Chrome浏览器自动升级后&#xff0c;导致驱动与浏览器不匹配&#xff0c;自己也不知道问题出在哪儿&#xff0c;花费了我大量时间去排查&#xff0c;所以接下来记录一些。…