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

Cmake的使用

第一步:安装Cmake

双击点开即可,无脑下一步。

第二步:编写一个简单的Cmake项目

CMakeLists.txt文件

# 设置最低的 CMake 版本要求
cmake_minimum_required(VERSION 3.10)# 设置项目名称
project(MyProject)# 添加可执行文件
add_executable(my_executable main.cpp)

CMakeLists.txt是CMake构建系统的配置文件,用于定义项目的构建规则和依赖关系。它通常位于项目的根目录中,包含了一系列的指令和设置,用于指导CMake如何构建项目。

以下是CMakeLists.txt文件中一些关键部分的详细讲解:

  1. cmake_minimum_required: 指定项目所需的最低CMake版本。这确保了只有满足最低版本的CMake才能正确构建项目。
  2. project: 定义项目的名称和版本。这个命令会设置一些变量,如PROJECT_NAMEPROJECT_VERSION,这些变量可以在后续的CMakeLists.txt中使用。
  3. add_executable/add_library: 分别用于添加可执行文件和库文件的目标。需要指定目标名称和源文件列表。例如,add_executable(myapp main.cpp)会创建一个名为myapp的可执行文件,其源文件为main.cpp
  4. target_link_libraries: 用于指定目标(可执行文件或库)所依赖的其他库。例如,target_link_libraries(myapp mylib)表示myapp依赖于mylib库。
  5. include_directories: 用于添加头文件搜索路径。这样,在编译时,编译器就知道在哪里查找头文件。
  6. link_directories: 用于添加库文件搜索路径。这样,在链接时,链接器就知道在哪里查找库文件。
  7. find_package: 用于查找并加载系统中已安装的包。这对于使用第三方库非常有用。
  8. set: 用于设置变量。可以用来定义各种路径、标志和其他配置选项。
  9. message: 用于在构建过程中输出信息,有助于调试和了解构建过程。
  10. install: 用于指定安装目标时应该包含哪些文件和目录,以及它们应该被安装到什么位置。
  11. enable_testing 和 add_test: 用于添加测试用例,并在构建过程中运行这些测试。
  12. catkin_package (针对ROS项目): 用于声明ROS消息文件并将其转换为特定编程语言所需的功能包,以及catkin工程项目文件的编译链接配置。

总的来说,CMakeLists.txt是CMake构建系统的核心,通过编写CMakeLists.txt文件,开发者可以方便地管理项目的构建过程,实现跨平台的构建。在使用CMake时,通常需要先运行cmake命令来生成对应平台的构建文件(如Makefile),然后使用make命令来编译源码生成可执行程序或共享库。

main.cpp

#include <iostream>
#include <stdio.h>
int main() {std::cout << "Hello, CMake!" << std::endl;printf("sb");return 0;
}

然后打开cmd窗口,直接cmake .即可

相关文章:

Cmake的使用

第一步&#xff1a;安装Cmake 双击点开即可&#xff0c;无脑下一步。 第二步&#xff1a;编写一个简单的Cmake项目 CMakeLists.txt文件 # 设置最低的 CMake 版本要求 cmake_minimum_required(VERSION 3.10)# 设置项目名称 project(MyProject)# 添加可执行文件 add_executabl…...

linux系统ELK组件介绍

ELK组件介绍 ELK组件介绍Elasticsearch&#xff1a;Logstash:Kibana:Kafka&#xff1a; Filebeat: ELK 官网地址&#xff1a;https://www.elastic.co 官网搭建&#xff1a;https://www.elastic.co/guide/index.html 组件介绍 Elasticsearch&#xff1a; 是一个基于Lucene的搜…...

回归预测 | Matlab实现BiTCN基于双向时间卷积网络的数据回归预测

回归预测 | Matlab实现BiTCN基于双向时间卷积网络的数据回归预测 目录 回归预测 | Matlab实现BiTCN基于双向时间卷积网络的数据回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现BiTCN基于双向时间卷积网络的数据回归预测&#xff08;完整源码和数据&a…...

Tailscale中继服务derper使用docker-compose部署

docker启动 docker run --restart always \--name derper -p 12345:12345 -p 3478:3478/udp \-v /root/.acme.sh/xxxx/:/app/certs \-e DERP_CERT_MODEmanual \-e DERP_ADDR12345 \-e DERP_DOMAINxxxx \-d ghcr.io/yangchuansheng/derper:latestdocker-compose启动 version: …...

Spring Cloud 实战系列之 Zuul 微服务网关搭建及配置

一、创建SpringBoot项目 用mavan搭建也可以。&#xff08;重要的是后面pom里应该引入那些依赖&#xff0c;application.yml怎么配置&#xff09; 由于开始构建项目时选择了Eureka Server&#xff0c;所以pom.xml中不需要手动添加依赖了 首先在启动类SpringcloudApplicatio…...

【数据结构】队列

前言&#xff1a; 本节博客是对基础数据结构队列的一种实现思路的分享&#xff0c;有需要借鉴即可。 1.队列的概念 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先 进先出FIFO(First In First Out) 入…...

学习JAVA的第十三天(基础)

目录 API之Arrays 将数组变成字符串 二分查找法查找元素 拷贝数组 填充数组 排序数组 Lambda表达式 集合的进阶 单列集合 体系结构 Collection API之Arrays 操作数组的工具类 将数组变成字符串 //将数组变成字符串char[] arr {a,b,c,d,e};System.out.println(Arra…...

C++--机器人的运动范围

目录 1. 题目 2. 思路 3. C代码测试 4. 测试结果 1. 题目 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动&#xff0c;每一次只能向左&#xff0c;右&#xff0c;上&#xff0c;下四个方向移动一格&#xff0c;但是不能进入行坐标和列坐标的数位之和大于k的格…...

深度学习API——keras初学

keras定义相关概念&#xff1a; Keras是一个深度学习API&#xff0c;使用Python语言编写的github开源项目&#xff0c;主要开发者为谷歌工程师。Keras底层可调用不同的机器学习平台&#xff0c;如TensorFlow、Theano或micsoft-CNTK。 作用&#xff1a;keras主要功能是简化机器…...

Web APIs知识点讲解(阶段二)

DOM-事件基础 一.事件 1.事件 目标&#xff1a;能够给 DOM元素添加事件监听 事件:事件是在编程时系统内发生的动作或者发生的事情&#xff0c;比如用户在网页上单击一个按钮 事件监听:就是让程序检测是否有事件产生&#xff0c;一旦有事件触发&#xff0c;就立即调用一个函…...

多平台拼音输入法软件的开发

拼音输入法从上个世纪发展到现在, 已经发展了几十年了, 技术上已经非常成熟了. 换句话说, 就是实际上没多少技术含量, 随便来个人就能手搓一个. 本文介绍一个简单的多平台拼音输入法软件的设计和实现, 支持 GNU/Linux (ibus) 平台 (PC) 和 Android 平台 (手机). 目录 1 中文输…...

Flutter学习7 - Dart 泛型

1、泛型类 //泛型类 class Cache<T> {final Map<String, T> _cache {};void saveData(String key, T value) {_cache[key] value;}//泛型方法T? getData(String key) {return _cache[key];} }void main() {Cache<int> cache1 Cache();const String name…...

Git 基本操作 ⼯作区、暂存区、版本库

创建本地仓库&#xff1a; 创建 Git 本地仓库 要提前说的是&#xff0c;仓库是进行版本控制的⼀个文件目录。我们要想对文件进行版本控制&#xff0c;就必须先创建⼀个仓库出来。 首先touch 一个文件&#xff1a; 初始化仓库&#xff1a; 创建完成后&#xff0c;我们会发现当前…...

利用Vue3的新API(customRef)实现防抖效果

customRef是创建一个自定义的 ref&#xff0c;然后显式声明对其依赖追踪和更新触发的控制方式。因为ref是直接更新的&#xff0c;数据修改会马上更新&#xff0c;而customRef可以认为控制更新的过程&#xff0c;比如可以利用这个api控制 空格输入限制、数据更新速度控制、违规内…...

【Linux】在 Ubuntu 系统下使用 Screen 运行 Python 脚本

在 Ubuntu 系统下使用 Screen 运行 Python 脚本的优点 在 Ubuntu 操作系统中&#xff0c;Screen 是一种非常有用的工具&#xff0c;特别是在需要长时间运行的任务或者需要在后台运行的任务中。结合 Python 脚本&#xff0c;Screen 提供了一种灵活且高效的方式来管理和执行任务…...

jxls——自定义命令设置动态行高

文章目录 前言依赖引入绘制 jxls 批注的 excel 模板测试类编写自定义命令关于自动换行 前言 之前的博客中都简单说了数据的渲染和导出excel文件。包括固定的 表头结构&#xff0c;以及动态 表头和表数据等方式。 本篇博客主要说明自定义命令的方式&#xff0c;控制输出excel文…...

前端面试练习24.3.2-3.3

HTMLCSS部分 一.说一说HTML的语义化 在我看来&#xff0c;它的语义化其实是为了便于机器来看的&#xff0c;当然&#xff0c;程序员在使用语义化标签时也可以使得代码更加易读&#xff0c;对于用户来说&#xff0c;这样有利于构建良好的网页结构&#xff0c;可以在优化用户体…...

优先级队列(Java )

目录 一、 优先级队列1、概念 二、优先级队列的模拟实现1、堆的概念2、堆的存储方式 三、堆的创建1、堆向下调整2、堆的创建3、建堆的时间复杂度 四、堆的插入与删除1、堆的插入2、堆的删除 五、用堆模拟实现优先级队列 一、 优先级队列 1、概念 优先级队列&#xff08;Priori…...

大宋咨询如何进行汽车门店6S标准现场检查

随着汽车市场的快速发展&#xff0c;汽车门店的现场管理日益受到关注。6S标准现场检查作为一项重要的评估工具&#xff0c;正在被越来越多的汽车厂商和经销商采用。 6S标准现场检查是指对汽车门店的整理、整顿、清洁、清扫、素养和安全六个方面进行规范和优化&#xff0c;旨在…...

仿牛客网项目---点赞模块的实现

本篇文章介绍一下项目中的点赞模块。 点赞模块是一个通过使用Redis实现的功能模块&#xff0c;它提供了点赞操作的处理逻辑和数据存取功能。通过服务类和控制器类的配合&#xff0c;点赞模块实现了用户对实体的点赞、点赞数量的查询、点赞状态的查询等功能。该模块使用了Redis…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

Android写一个捕获全局异常的工具类

项目开发和实际运行过程中难免会遇到异常发生&#xff0c;系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler&#xff0c;它是Thread的子类&#xff08;就是package java.lang;里线程的Thread&#xff09;。本文将利用它将设备信息、报错信息以及错误的发生时间都…...

AWS vs 阿里云:功能、服务与性能对比指南

在云计算领域&#xff0c;Amazon Web Services (AWS) 和阿里云 (Alibaba Cloud) 是全球领先的提供商&#xff0c;各自在功能范围、服务生态系统、性能表现和适用场景上具有独特优势。基于提供的引用[1]-[5]&#xff0c;我将从功能、服务和性能三个方面进行结构化对比分析&#…...

深入浅出JavaScript中的ArrayBuffer:二进制数据的“瑞士军刀”

深入浅出JavaScript中的ArrayBuffer&#xff1a;二进制数据的“瑞士军刀” 在JavaScript中&#xff0c;我们经常需要处理文本、数组、对象等数据类型。但当我们需要处理文件上传、图像处理、网络通信等场景时&#xff0c;单纯依赖字符串或数组就显得力不从心了。这时&#xff…...