CMakeLists.txt语法规则:提供信息的变量说明一

一.  简介

前面几篇文章学习了 CMakeLists.txt语法中 部分常用命令。

接下来学习CMakeLists.txt语法中部分常用变量,变量也是 cmake 中的一个重头戏,cmake 提供了很多内置变量。每一个变量都有它自己的含义,可以通过如下链接地址查询到所有的内置变量及其相应的介绍:

https://cmake.org/cmake/help/v3.16/manual/cmake-variables.7.html
在这一份文档中,对变量进行分类。变量分为:提供信息的变量、改变行为的变量、描述系统的变量、控制编译的变量等等。

二.   CMakeLists.txt语法规则:部分常用变量

1.  提供信息的变量

顾名思义,这种变量可以提供某种信息,既然如此,那么我们通常只需要读取变量即可,而不需要对变量进行修改:
变量
说明
PROJECT_SOURCE_DIR
工程顶层目录,也就是顶层 CMakeLists.txt 源码所在目录
PROJECT_BINARY_DIR
工 程 BINARY_DIR , 也 就 是 顶 层 CMakeLists.txt 源码的 BINARY_DIR
CMAKE_SOURCE_DIR
PROJECT_SOURCE_DIR 等价
CMAKE_BINARY_DIR
PROJECT_BINARY_DIR 等价
CMAKE_CURRENT_SOURCE_DIR
当前源码所在路径
CMAKE_CURRENT_BINARY_DIR
当前源码的 BINARY_DIR
CMAKE_MAJOR_VERSION
cmake 的主版本号
CMAKE_MINOR_VERSION
cmake 的次版本号
CMAKE_VERSION
cmake 的版本号(主++修订)
PROJECT_VERSION_MAJOR
工程的主版本号
PROJECT_VERSION_MINOR
工程的次版本号
PROJECT_VERSION
工程的版本号
CMAKE_PROJECT_NAME
工程的名字
PROJECT_NAME
工程名,与 CMAKE_PROJECT_NAME 等价

2.  PROJECT_SOURCE_DIR变量 和 PROJECT_BINARY_DIR 变量

PROJECT_SOURCE_DIR 变量表示工程的顶级目录,也就是顶层 CMakeLists.txt 文件所在目录;
PROJECT_BINARY_DIR 变 量 表示 工程 的 BINARY_DIR ,也 就是 顶 层 CMakeLists.txt 源 码 对 应的 BINARY_DIR (输出文件目录)。
譬如工程目录结构如下所示:
CMakeLists.txt 文件内容如下:
# CMakeLists.txt
cmake_minimum_required("VERSION" "3.16")
project(HELLO)
message(${PROJECT_SOURCE_DIR})
message(${PROJECT_BINARY_DIR})
CMakeLists.txt 中,我们打印了 PROJECT_SOURCE_DIR PROJECT_BINARY_DIR 变量,进入到 build 目录下,执行 cmake
从打印信息可知, PROJECT_SOURCE_DIR 指的就是工程的顶层 CMakeLists.txt 源码所在路径,而 PROJECT_BINARY_DIR 指的是我们执行 cmake 命令的所在目录。

3.  CMAKE_SOURCE_DIR 和 CMAKE_BINARY_DIR

与上面两个等价,大家自己打印出来看看便知!
顶层 CMakeLists.txt 添加打印命令:
message(${CMAKE_SOURCE_DIR})
message(${CMAKE_BINARY_DIR})

进入 build目录下,执行 cmake ..命令后如下:
可以看出,与 PROJECT_SOURCE_DIR,PROJECT_BINARY_DIR一样的目录。

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

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

相关文章

CAPM模型代码

CAPM模型是一种使用股票收益率和市场收益率之间的关系来估计资产预期收益率的模型。下面是一个简单的CAPM模型的Python代码示例: python import numpy as np def capm_model(stock_returns, market_returns, risk_free_rate): # 计算股票超额收益率 exces…

危险!48篇问题文章曝光!这本Frontiers“水刊”3年扩刊26倍!

据最新统计,FRONTIERS IN SURGERY以48篇质疑文章领跑质疑榜。FRONTIERS IN SURGERY创刊于2014年,是一本开源期刊,主要发表有关外科实践的进展和研究成果。该期刊的各方面数据怎么样呢?接下来,小编就带着大家来解析一下…

C# 中 IOC (Inversion of Control,控制反转)

在 C# 中,IOC (Inversion of Control,控制反转) 是一种设计模式和软件开发原则,用于解耦组件之间的依赖关系,提高代码的可维护性和可测试性。IOC 容器是实现 IOC 的关键组件,它负责管理对象的创建、生命周期和依赖注入…

刷题笔记 - 二分搜索/查找模板

文章目录 二分搜索模板直接返回mid的模板结合其他逻辑的模板 二分搜索模板 直接返回mid的模板 题目: [leetcode] 二分查找是一种高效的搜索算法,用于在有序数组中查找特定元素的位置。以下是二分查找的通用模板: def binary_search(nums, target):# …

Photoshop前言

Photoshop前言 分辨率图像格式工具界面组件 分辨率 分辨率是指单位长度内包含的像素点的数量,其单位通常为像素/英寸(ppi),300ppi表示每英寸包含300个像素点。对于1英寸1英寸大小的图像,若分辨率为72ppi,则…

使用axios发送请求的格式是什么?示例代码

get: this.$axios({ headers:{}, url:http://apiadmin.xxdalaba.cn/api/5cda5d0b8c5cc, params:{}, }).then(function(res){ }).catch(function(err){ }) post: this.$axios({ method:’post’, headers:{}, url:http://apiadmin.xxdalaba.cn/api/5cda5d0b8c5cc, data:this.$qs…

udp/tcp回显网络编程

udp DatagramSocket 用于接收和发送udp数据报 构造方法: DatagramSocket():创建一个UDP数据报套接字的Socket,绑定到本地上 一个随机可用端口上,一般用于客户端DatagramSocket(int port):创建一个UDP数据报套接字的Socket,绑定到…

玩comfyui踩过的坑之使用ComfyUI_Custom_NODES_ALEKPET翻译组件问题

环境: 秋叶安装包,安装ComfyUI_Custom_NODES_ALEKPET组件或者直接下载网盘中的包,直接解压包到comfyui根目录/custom_nodes/,重启后,按指导文件操作。 注意:网盘指导包中有配置好的流程json文件&#xff0…

Python爬虫:XPath解析爬取豆瓣电影Top250示例

一、示例的函数说明: 函数processing():用于处理字符串中的空白字符,并拼接字符串。 主函数程序入口:每页显示25部影片,实现循环,共10页。通过format方法替换切换的页码的url地址。然后调用实现爬虫程序的…

平衡二叉搜索树(AVL)旋转

单独开一章节介绍 RotateL 、 RotateR 及更复杂的 LR 和 RL 型旋转,更多是为了红黑树的旋转部分做铺垫;由于 AVL 树和红黑树发生旋转的判断标准不同 —— 分别为平衡因子和节点的颜色,两棵树左旋和右旋的在细节上会有一些差异,但从…

实现VUE DPlayer录像功能:Canvas加MediaRecorder

在做之前,以为DPlaye知道数据流,录像直接保存即可。结果是,根本没有录像功能。 怎么办呢?搜索了一番,给出的建议是使用Canvas加MediaRecorder来实现。大意是使用canvas,定时把视频画面刷过来;然…

Java基础教程(12)-Java中的IO流

IO是指Input/Output,即输入和输出。以内存为中心: Input指从外部读入数据到内存,例如,把文件从磁盘读取到内存,从网络读取数据到内存等。Output指把数据从内存输出到外部,例如,把数据从内存写入到文件,把数据从内存输出到网络等。流的输入和输出 Java程序通过流来完成输…

发表博客之:cutlass demo讲解,在 sm75 机器上用 cuda core计算 fp32 矩阵乘法!对cutlass 感兴趣的看客别走开!!

文章目录 [发表博客之:cutlass demo讲解,在 sm75 机器上用 cuda core计算 fp32 矩阵乘法!对cutlass 感兴趣的看客别走开!!](https://cyj666.blog.csdn.net/article/details/138469553)深入理解 cutlass 在 sm75 cuda c…

基于Spring Boot的线上交流互动系统设计与实现

基于Spring Boot的线上交流互动系统设计与实现 开发语言:Java框架:springbootJDK版本:JDK1.8数据库工具:Navicat11开发软件:eclipse/myeclipse/idea 系统部分展示 系统功能界面图,在系统首页可以查看首页…

「 网络安全常用术语解读 」通用安全通告框架CSAF详解

1. 简介 通用安全通告框架(Common Security Advisory Framework,CSAF)通过标准化结构化机器可读安全咨询的创建和分发,支持漏洞管理的自动化。CSAF是OASIS公开的官方标准。开发CSAF的技术委员会包括许多公共和私营部门的技术领导…

如何使用预训练的通用音频表示进行心脏杂音检测

心脏杂音检测是心血管疾病诊断中的一个重要方面,通过听诊器进行检查是常见方法,但对临床医生的经验依赖很大。为了减少心脏声音解释中对熟练临床医生的需求,探索自动化心脏听诊的深度学习方法很有必要。然而,尽管深度学习模型通常…

Redis Cluster集群方案什么情况下会导致整个集群不可用?

Redis 没有使用哈希一致性算法,而是使用哈希槽。 Redis 中的哈希槽一共有16384个,计算给定 密钥的哈希槽,我们只需要对密钥的 CRC16 去取 16384。假设集群中有A、B、C三个集群节点, 不存在复制模式下,每个集群的节点包…

、、、、、

、、 、 transient 关键字总结 1)transient修饰的变量不能被序列化;2)transient只作用于实现 Serializable 接口;3)transient只能用来修饰普通成员变量字段;4)不管有没有 transient 修饰&…

网络工程师必学知识:SSH登录抓包分析报文交互过程

网络工程师必学知识:SSH登录抓包分析报文交互过程 1.概述:2.SSH传输层协议:3.SSH用户认证协议:4.SSH连接协议:5.抓包看看:6.总结:1.概述: SSH(Secure Shell ,安全外壳协议),就是在不安全的协议外层再加一层安全外壳。比如说telnet+SSH=stelnet。 SSH由三个组件构成:…

ASP.NET网上书店

摘要 本设计尝试用ASP.NET在网络上架构一个电子书城,以使每一位顾客不用出门在家里就能够通过上网来轻松购书。本文从理论和实践两个角度出发,对一个具有数据挖掘功能电子书城进行设计与实现分析。论文首先较为详尽地介绍了面向对象分析与设计的有关概念…