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

CMakeLists常用命令

# 设置cmake最低版本
cmake_minimum_required(VERSION 3.2)# project命令用于指定cmake工程的名称,实际上,它还可以指定cmake工程的版本号(VERSION关键字)、
#简短的描述(DESCRIPTION关键字)、主页URL(HOMEPAGE_URL关键字)
#和编译工程使用的语言(LANGUAGES关键字)
# project(<PROJECT-NAME> [<language-name>...])
# ${PROJECT_NAME}:本CMakeLists.txt的project名称
**project(xxx)**# project(<PROJECT-NAME> [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]] 
#[DESCRIPTION <project-description-string>][HOMEPAGE_URL <url-string>] 
#[LANGUAGES <language-name>...])
project(mytest VERSION 1.2.3.4)
project (mytest HOMEPAGE_URL “https://www.XXX(示例).com”)# 获取路径下所有的.cpp/.c/.cc文件(不包括子目录),并赋值给变量中
**aux_source_directory(路径 变量)**# 设置变量,给文件名/路径名或其他字符串起别名,用${变量}获取变量内容
**set(变量 文件名/路径/...)**# 打印消息
**message(消息)**STATUS:输出一条普通状态消息(默认类型,如果省略类型则默认为 STATUS)。WARNING:输出一条警告消息。AUTHOR_WARNING:输出一条给构建系统维护者的警告消息。FATAL_ERROR:输出一条错误消息并停止 CMake 配置过程。SEND_ERROR:与 FATAL_ERROR 相同,输出一条错误消息并停止 CMake 配置过程。
例子:
# 输出一条普通状态消息 
message("This is a status message.") 
# 输出一条警告消息  
message(WARNING "This is a warning message.")  # 编译子文件夹的CMakeLists.txt
**add_subdirectory(子文件夹名称)**# 将.cpp/.c/.cc文件生成.a静态库
# 注意,库文件名称通常为libxxx.so,在这里只要写xxx即可
**add_library(库文件名称 STATIC 文件)**
例子:add_library(mylib STATIC src/lib.cpp src/lib2.cpp)//创建一个名为 mylib 的静态库,包含 src/lib.cpp 和 src/lib2.cpp 这两个源文件
add_library(mysharedlib SHARED src/lib.cpp src/lib2.cpp)//创建一个名为 mysharedlib 的动态库# 将.cpp/.c/.cc文件生成可执行文件
**add_executable(可执行文件名称 文件)**# 规定.h头文件路径
**include_directories(路径)**#函数获取指定组件的文件名,并将其保存到变量中
**get_filename_component(<variable> <component> <path> [BASE_DIR <base-dir>] [NAME_WE <name-we>])**<variable>:用于存储提取的组件的变量名。<component>:要提取的组件类型,如 DIRECTORY、NAME、EXT 等。<path>:要处理的文件路径。DIRECTORY:提取路径中的目录部分。NAME:提取路径中的文件名(包括扩展名)。EXT:提取路径中的文件扩展名。NAME_WE:提取路径中的文件名(不包括扩展名)。ABS_PATH:提取路径的绝对路径。
例子:get_filename_component(MY_DIR "${MY_PATH}" DIRECTORY)//MY_DIR 会存储 MY_PATH 的目录部分get_filename_component(MY_NAME "${MY_PATH}" NAME) //MY_NAME 会存储文件名(包括扩展名)#用于向目标(如库或可执行文件)添加编译选项
**add_compile_options(<option>...)**
例子:target_compile_options(my_target PRIVATE -Wall -Wextra -Werror)**option(<name> "help string describing <name>" [initial value])**
用于定义一个可以在配置时由用户设置的选项。这个选项可以是一个布尔值(ON 或 OFF)
例子:option(MY_OPTION "Enable some feature in my project" ON)
MY_OPTION 是一个选项,它的描述是 "Enable some feature in my project",并且它的默认值是 ON#用于文件搜索的命令,它会根据给定的模式匹配文件,并将匹配到的文件列表赋值给一个变量
**file(GLOB ...)**
例子:file(GLOB sources "src/*.cpp")   //使用 GLOB 收集当前目录下的所有 .cpp 文件  

相关文章:

CMakeLists常用命令

# 设置cmake最低版本 cmake_minimum_required(VERSION 3.2)# project命令用于指定cmake工程的名称&#xff0c;实际上&#xff0c;它还可以指定cmake工程的版本号&#xff08;VERSION关键字&#xff09;、 #简短的描述&#xff08;DESCRIPTION关键字&#xff09;、主页URL&…...

英语 倒装结构中的主语和助动词,用于强调 inversion

I am used to travelling by air and only on one occasion have I ever felt frightened. 1、翻译为中文&#xff1a;我习惯了乘坐飞机旅行&#xff0c;只有在一次经历中我感到过害怕。 2、分析时态和句子语法是否正确&#xff1a;该句子使用了现在完成时&#xff08;I am u…...

SQL注入---HTTP报头注入

文章目录 目录 文章目录 一.uagent注入 二.refeer注入 三.Cookie注入 前文中提到万能密钥的工作原理&#xff0c;然而万能密钥仅在源代码中没有代码审计&#xff0c;此时才被称之为万能密钥&#xff0c;而代码中有代码审计时需要分以下几种情况讨论 一.uagent注入 先看代码&a…...

docker安装sentinel

文章目录 前言安装docker指令安装制作docker-compose.yaml文件 查看网站 前言 Sentinel 是阿里巴巴开源的一款轻量级流量控制和熔断降级工具&#xff0c;可用于保护分布式系统中的服务。它可以帮助开发人员解决在分布式架构中面临的流量管理、服务保护、性能优化等问题。 安装…...

达梦的归档日志参数ARCH_RESERVE_TIME测试

达梦的参数ARCH_RESERVE_TIME测试 前面有提到和oracle相比&#xff0c;达梦的归档日志相关参数有个比较特别&#xff0c;可以通过设置它去规定归档日志的保留时间。 ARCH_RESERVE_TIME&#xff1a;归档日志保留时间&#xff0c;单位分钟&#xff0c;取值范围 0~2147483647。只…...

Linux网络 基础概念

目录 背景知识 互联网的发展 局域网和广域网 网络拓扑 网络协议栈 协议的概念 网络协议的分层 网络与操作系统的联系 网络传输的基本流程 IP地址和MAC地址 以太网通信 数据包的封装和分用 跨网段传输 背景知识 互联网的发展 计算机网络是计算机技术和通信技术相…...

装机指导。

everything winrar snipaste cmake git tortoisegit tortoisesvn inno setup vs2022 安装的时候注意sdk路径一定要默认&#xff01;&#xff01; 否则你会发现在你的sdk安装路径的根盘符下会多出一个Windows Kits&#xff0c;强迫症接受不了 默认的会跟已有的装在一起…...

解决windows docker context deadline exceeded问题

首先确保开启了wsl。cmd 直接输wsl&#xff0c;进入虚拟命令行代表开启 配置镜像 内容如下&#xff1a; {"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"f…...

django基于python的法院执法案件管理系统

本课题使用Python语言进行开发。代码层面的操作主要在PyCharm中进行&#xff0c;将系统所使用到的表以及数据存储到MySQL数据库中&#xff0c;方便对数据进行操作本课题基于WEB的开发平台&#xff0c;设计的基本思路是&#xff1a; 框架&#xff1a;django/flask 后端&#xff…...

tcp early retransmit 和 rack 中神奇的 1/4 minrtt

雨中跑步十公里&#xff0c;沿河看柳&#xff0c;发了一则朋友圈&#xff1a; 为什么采用 1/4 minrtt 作为重传和探测的延时&#xff0c;上图解释的已经很清楚了&#xff0c;主要还是怕乱序&#xff0c;关于乱序的度量&#xff0c;上图解释得非常清楚&#xff0c;乱序预期可在…...

【强化学习实践】Gym+倒立单摆+创建自己的环境

一、Gym Gym是OpenAI开发的一个强化学习算法测试环境集合包。Gym提供了多种标准的环境&#xff0c;包括经典的游戏&#xff08;如Atari游戏&#xff09;、机器人模拟任务以及其他各种类型的问题&#xff0c;供开发者测试和训练强化学习智能体。在Gym环境中&#xff0c;开发者可…...

实习记录小程序|基于SSM的实习记录小程序设计与实现(源码+数据库+文档)

知识管理 目录 基于SSM的习记录小程序设计与实现 一、前言 二、系统设计 三、系统功能设计 1、小程序端&#xff1a; 2、后台 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕…...

Netty NioEventLoop详解

文章目录 前言类图主要功能NioEventLoop如何实现事件循环NioEventLoop如何处理多路复用Netty如何管理Channel和Selector管理Channel管理Selector注意事项 前言 Netty通过事件循环机制(EventLoop)处理IO事件和异步任务&#xff0c;简单来说&#xff0c;就是通过一个死循环&…...

互联网大厂常见面试题目

1. CPU 的内存结构分为哪几层&#xff0c;分别是用于放什么数据的&#xff0c;如果一个函数里面有全局变量&#xff0c;局部变量和静态变量数据是如何存放的 2.C多态的实现原理是什么&#xff0c;父类是如何找到子类的虚函数实现的 3.操作系统中的虚拟内存实现机制是什么&…...

TechTool Pro for Mac v19.0.3中文激活版 硬件监测和系统维护工具

TechTool Pro for Mac是一款专为Mac用户设计的强大系统维护和故障排除工具。它凭借全面的功能、高效的性能以及友好的操作界面&#xff0c;赢得了广大用户的信赖和好评。 软件下载&#xff1a;TechTool Pro for Mac v19.0.3中文激活版 作为一款专业的磁盘和系统维护工具&#x…...

Linux-docker安装数据库redis

1.拉取redis镜像 docker pull redis # 下载最新的redis版本 docker pull redis:版本号 # 下载指定的redis版本ps&#xff1a;我这是已经下载最新版本的redis 2.查看redis镜像 docker images3.创建挂在路径并授权 mkdir -p /usr/local/redis/data mkdir -p /usr/local…...

LisJson解析配置表

每日一句&#xff1a;南来北往&#xff0c;不辜负生活&#xff0c;不迷失方向 [{ "ID": 0, "Name": "SmallPeople", "InitHealth": 100, "CostGold": 0, "MoveSpeed": 1…...

剑指offer10.斐波那契数列(动态规划)

写一个函数&#xff0c;输入 n &#xff0c;求斐波那契&#xff08;Fibonacci&#xff09;数列的第 n 项&#xff08;即 F(N)&#xff09;。斐波那契数列的定义如下&#xff1a; F(0) 0, F(1) 1 F(N) F(N - 1) F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 1 开始&#x…...

HarmonyOS实战开发-WebSocket的使用。

介绍 本示例展示了WebSocket的使用&#xff0c;包括客户端与服务端的连接和断开以及客户端数据的接收和发送。 WebSocket连接&#xff1a;使用WebSocket建立服务器与客户端的双向连接&#xff0c;需要先通过createWebSocket方法创建WebSocket对象&#xff0c;然后通过connect…...

【前缀合】Leetcode 连续数组

题目解析 525. 连续数组 寻找一个子数组&#xff0c;这个子数组中包含相同数目的0和1&#xff0c;但是这个子数组需要最长的 算法讲解 只需在[0,i]寻找一段区间使得这一段区间的和也等于sum即可 细节问题&#xff1a;1. 这里的哈希表的value存的是下标&#xff0c;因为需要找…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

BLEU评分:机器翻译质量评估的黄金标准

BLEU评分&#xff1a;机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域&#xff0c;衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标&#xff0c;自2002年由IBM的Kishore Papineni等人提出以来&#xff0c;…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...

Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解

文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一&#xff1a;HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二&#xff1a;Floyd 快慢指针法&#xff08;…...