CMake 中的置变量

在 CMake 中,变量是存储和传递信息的重要方式。以下是一些常用的 CMake 变量,以表格形式列出,包括它们的名称、含义和常见用途:

变量名称含义常见用途
CMAKE_CURRENT_SOURCE_DIR当前处理的 CMakeLists.txt 文件所在的源代码目录的绝对路径引用当前目录下的文件和子目录
CMAKE_SOURCE_DIR项目的根目录(顶级 CMakeLists.txt 文件所在的目录)的绝对路径引用项目根目录下的文件和子目录
CMAKE_CURRENT_BINARY_DIR当前构建目录的绝对路径生成输出文件、中间文件或临时文件
CMAKE_BINARY_DIR项目的根构建目录的绝对路径生成项目级别的输出文件或临时文件
CMAKE_BUILD_TYPE当前构建类型(如 DebugRelease 等)控制编译器的优化和调试选项
CMAKE_CXX_COMPILERC++ 编译器的路径指定 C++ 编译器
CMAKE_C_COMPILERC 编译器的路径指定 C 编译器
CMAKE_LINKER链接器的路径指定链接器
CMAKE_AR静态库归档工具的路径指定静态库归档工具
CMAKE_CXX_FLAGSC++ 编译器的全局标志设置全局 C++ 编译器标志
CMAKE_C_FLAGSC 编译器的全局标志设置全局 C 编译器标志
CMAKE_EXE_LINKER_FLAGS可执行文件链接器标志设置可执行文件的链接器标志
CMAKE_SHARED_LINKER_FLAGS共享库链接器标志设置共享库的链接器标志
CMAKE_STATIC_LINKER_FLAGS静态库链接器标志设置静态库的链接器标志
CMAKE_MODULE_PATH模块搜索路径添加自定义模块的搜索路径
CMAKE_PREFIX_PATH包搜索路径添加自定义包的搜索路径
CMAKE_INCLUDE_PATH包头文件搜索路径添加自定义头文件的搜索路径
CMAKE_LIBRARY_PATH包库文件搜索路径添加自定义库文件的搜索路径
CMAKE_INSTALL_PREFIX安装路径前缀设置默认的安装路径
CMAKE_BUILD_WITH_INSTALL_RPATH是否在构建时使用安装路径的 RPATH控制构建时的 RPATH 设置
CMAKE_INSTALL_RPATH安装时的 RPATH设置安装后的运行时库路径
CMAKE_INSTALL_RPATH_USE_LINK_PATH是否使用链接路径作为安装 RPATH控制安装 RPATH 的设置
CMAKE_POSITION_INDEPENDENT_CODE是否生成位置无关代码控制是否生成位置无关代码(如 -fPIC
CMAKE_CXX_STANDARDC++ 标准版本设置目标的 C++ 标准版本(如 111417 等)
CMAKE_CXX_STANDARD_REQUIRED是否强制使用指定的 C++ 标准确保编译器支持指定的 C++ 标准
CMAKE_CXX_EXTENSIONS是否启用 C++ 编译器扩展控制是否启用编译器特定的扩展(如 gnu++11
CMAKE_DEBUG_POSTFIX调试版本的后缀设置调试版本的目标文件后缀
CMAKE_RELEASE_POSTFIX发布版本的后缀设置发布版本的目标文件后缀
CMAKE_SIZEOF_VOID_P指针大小(字节)获取目标平台的指针大小
CMAKE_SYSTEM_NAME系统名称(如 LinuxWindowsDarwin 等)获取目标系统的名称
CMAKE_SYSTEM_VERSION系统版本获取目标系统的版本
CMAKE_SYSTEM_PROCESSOR系统处理器架构获取目标系统的处理器架构
CMAKE_HOST_SYSTEM_NAME主机系统名称获取主机系统的名称
CMAKE_HOST_SYSTEM_VERSION主机系统版本获取主机系统的版本
CMAKE_HOST_SYSTEM_PROCESSOR主机系统处理器架构获取主机系统的处理器架构

说明

  • 源目录变量
    • CMAKE_CURRENT_SOURCE_DIRCMAKE_SOURCE_DIR 是用于引用源代码目录的变量。CMAKE_CURRENT_SOURCE_DIR 是当前处理的 CMakeLists.txt 文件所在的目录,而 CMAKE_SOURCE_DIR 是项目的根目录。
  • 构建目录变量
    • CMAKE_CURRENT_BINARY_DIRCMAKE_BINARY_DIR 是用于引用构建目录的变量。CMAKE_CURRENT_BINARY_DIR 是当前构建目录,而 CMAKE_BINARY_DIR 是项目的根构建目录。
  • 编译器变量
    • CMAKE_CXX_COMPILERCMAKE_C_COMPILERCMAKE_LINKER 等变量用于指定编译器和链接器的路径。
  • 编译器标志变量
    • CMAKE_CXX_FLAGSCMAKE_C_FLAGSCMAKE_EXE_LINKER_FLAGS 等变量用于设置全局编译器和链接器标志。
  • 路径变量
    • CMAKE_MODULE_PATHCMAKE_PREFIX_PATHCMAKE_INCLUDE_PATH 等变量用于设置模块、包和头文件的搜索路径。
  • 安装路径变量
    • CMAKE_INSTALL_PREFIXCMAKE_INSTALL_RPATH 等变量用于控制安装路径和运行时库路径。
  • 目标属性变量
    • CMAKE_CXX_STANDARDCMAKE_DEBUG_POSTFIX 等变量用于设置目标的属性,如 C++ 标准版本和调试版本的后缀。
  • 系统信息变量
    • CMAKE_SYSTEM_NAMECMAKE_SYSTEM_VERSIONCMAKE_SYSTEM_PROCESSOR 等变量用于获取目标系统的相关信息。

这些变量在编写 CMake 脚本时非常有用,可以帮助你编写可移植、灵活且易于维护的构建系统。如果你有更多问题或需要进一步的解释,请随时告诉我!

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

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

相关文章

深入解析C++类:面向对象编程的核心基石

一、类的本质与核心概念 1.1 类的基本定义 类是将**数据(属性)与操作(方法)**封装在一起的用户自定义类型,是面向对象编程的核心单元。 // 基础类示例 class BankAccount { private: // 访问控制string owner; …

介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用及数组讲解

Docker 是一种轻量级的容器化技术,能够让开发者将应用程序和其所有依赖项打包成一个独立的容器,实现快速部署和运行。以下是 Docker 的基本概念和优势: 基本概念: 镜像(Image):镜像是一个只读的…

在msys2里面的mingw64下面编译quickjs

其实非常的简单,就是正常的make 和make install就行了,这里只是简单的做个编译过程记录。 打开开始--程序--里面的msys64里面的mingw64控制台窗口,切换到quickjs下载解压缩后的目录,执行make和make install ndyHP66G5 MINGW64 ~…

el-table实现表头带筛选功能,并支持分页查询

最开始尝试了下面方法,发现这种方法仅支持筛选当前页的数据,不符合产品要求 于是通过查询资料发现可以结合filter-change事件,当表格的筛选条件发生变化的时候会触发该事件,调接口获取符合条件的数据,实现如下 1、表格…

OpenCV 从入门到精通(day_03)

1. ROI切割 ROI:Region of Interest,翻译过来就是感兴趣的区域。什么意思呢?比如对于一个人的照片,假如我们要检测眼睛,因为眼睛肯定在脸上,所以我们感兴趣的只有脸这部分,其他都不care&#xf…

OpenGL进阶系列20 - OpenGL SuperBible - bindlesstex 例子学习

目录 一:概述: 二:相关API介绍 三:代码完整注释 一: 概述: 什么是无绑定纹理(bindless texture)?无绑定纹理是OpenGL的一项技术,旨在消除传统的纹理绑定操作。这项技术允许着色器直接访问纹理而不需要显式地将纹理绑定到某个纹理单元,从而减少了渲染管线中的开销…

Spring Security认证授权深度解析

一 Spring Security简介 Spring Security是Spring生态系统中的一个安全框架,主要用于处理认证(Authentication)和授权(Authorization)。它提供了一套完整的安全解决方案,可以轻松集成到Spring应用中。 二 核心概念 1. 认证(Authentication) 验证用户…

[学成在线]10-课程审核

课程审核 需求分析 根据模块需求分析,课程发布前要先审核,审核通过方可发布。下图是课程审核及发布的流程图: 为什么课程审核通过才可以发布呢? 这样做为了防止课程信息有违规情况,课程信息不完善对网站用户体验也不…

【SpringBoot + MyBatis + MySQL + Thymeleaf 的使用】

目录: 一:创建项目二:修改目录三:添加配置四:创建数据表五:创建实体类六:创建数据接口七:编写xml文件八:单元测试九:编写服务层十:编写控制层十一…

Elasticsearch索引的字段映射

目录 type String类型 text和keyword的区别 数值类型 日期类型 index doc_values fields analyzer store index_options ElasticSearch索引映射示例 Elasticsearch中的字段设置直接影响数据的存储、索引和查询行为。结合索引查询场景合理设置mapping信息可以起到提…

【已解决】实际参数列表和形式参数列表长度不同、java: 无法将类xxx中的构造器xxx应用到给定类型| lombok相关

idea运行maven项目时&#xff0c;报错这个&#xff08;如标题&#xff09; 解决方案记录&#xff1a; 找到了之前的、能运行成功不报错的 maven项目。参考其pom.xml文件中lombok相关部分&#xff0c;将<path>标签下的lombok加个版本号&#xff0c;就运行成功了&#xff1…

4. 学习网站:学习新的技能或培养兴趣爱好

文章目录 前言英文网站&#xff1a;培养兴趣爱好的应用总结 前言 学习网站以及具体提供的内容。 英文网站&#xff1a; Coursera&#xff1a;提供来自全球顶尖大学和机构的在线课程&#xff0c;涵盖广泛的学科&#xff0c;包括编程、数据科学、商业和艺术等。Udemy&#xff1…

LabVIEW 开发中 TCP 与 UDP 协议的差异

在 LabVIEW 开发的网络通信场景中&#xff0c;TCP 和 UDP 是常用的两种传输层协议&#xff0c;它们各自具有独特的特点&#xff0c;适用于不同的应用需求。理解它们之间的差异&#xff0c;有助于开发者根据具体项目需求选择合适的协议&#xff0c;以实现高效、稳定的网络通信。…

04-深入解析 Spring 事务管理原理及源码

深入解析 Spring 事务管理原理及源码 Spring 事务管理&#xff08;Transaction Management&#xff09;是企业级应用开发中至关重要的功能之一&#xff0c;它确保数据操作的 原子性、一致性、隔离性、持久性&#xff08;ACID&#xff09;。 本篇博客将从 Spring 事务的基本概…

【Linux】用户向硬件寄存器写入值过程理解

思考一下&#xff0c;当我们咋用户态向寄存器写入一个值&#xff0c;这个过程是怎么样的呢&#xff1f;以下是应用程序通过标准库函数&#xff08;如 write()、ioctl() 或 mmap()&#xff09;向硬件寄存器写入值的详细过程&#xff0c;从用户空间到内核再到硬件的完整流程&…

自动驾驶02:点云预处理——02(运动补偿篇LIO-SAM)

当激光雷达&#xff08;LiDAR&#xff09;在运动中采集点云时&#xff0c;每个点的时间戳不同&#xff0c;而车辆在移动&#xff0c;导致点云在不同时间点的坐标与实际情况不符&#xff0c;这种现象称为运动畸变&#xff08;Motion Distortion&#xff09;。为了得到无畸变的点…

基础算法篇(3)(蓝桥杯常考点)—图论

前言 这期是基础算法篇的第三节&#xff0c;其中的dijkstra算法更是蓝桥杯中的高频考点 图的基本相关概念 有向图和无向图 自环和重边 稠密图和稀疏图 对于不带权的图&#xff0c;一条路径的路径长度是指该路径上各边权值的总和 对于带权的图&#xff0c;一条路径长度时指该路…

Crawl4AI:专为AI设计的开源网页爬虫工具,释放大语言模型的潜能

在当今数据驱动的AI时代,高效获取结构化网页数据是模型训练和应用落地的关键。Crawl4AI作为一款专为大型语言模型(LLMs)设计的开源爬虫工具,凭借其极速性能、AI友好输出和模块化设计,正在成为开发者社区的热门选择。本文将深入解析其核心特性与技术优势。 一、Crawl4AI的核…

前后端数据序列化:从数组到字符串的旅程(附优化指南)

&#x1f310; 前后端数据序列化&#xff1a;从数组到字符串的旅程&#xff08;附优化指南&#xff09; &#x1f4dc; 背景&#xff1a;为何需要序列化&#xff1f; 在前后端分离架构中&#xff0c;复杂数据类型&#xff08;如数组、对象&#xff09;的传输常需序列化为字符…

汇编学习之《移位指令》

这章节学习前需要回顾之前的标志寄存器的内容&#xff1a; 汇编学习之《标志寄存器》 算数移位指令 SAL (Shift Arithmetic Left)算数移位指令 : 左移一次&#xff0c;最低位用0补位&#xff0c;最高位放入EFL标志寄存器的CF位&#xff08;进位标志&#xff09; OllyDbg查看…