cmake内置指令和预定义变量

chatgpt/2023/9/26 13:13:16

内置指令

CMake 内置了很多指令,下面列举了一些常用的指令:

  1. add_executable:指定生成可执行文件。
  2. add_library:指定生成库文件。
  3. add_subdirectory:添加子目录。
  4. aux_source_directory:自动收集目录下的源文件。
  5. cmake_minimum_required:指定所需的 CMake 最低版本。
  6. execute_process:在构建时执行外部程序。
  7. find_package:查找库文件和头文件。
  8. include_directories:指定头文件搜索路径。
  9. link_directories:指定库文件搜索路径。
  10. list:操作列表,例如添加、删除、查找、排序等。
  11. message:输出信息、警告、错误等消息。
  12. project:声明项目名称和使用的编程语言。
  13. set:设置变量的值。
  14. target_include_directories:为目标指定头文件搜索路径。
  15. target_link_libraries:为目标指定链接库。
  16. option:提供一个用户可以选择的选项。
  17. file:对文件进行操作,如读取、写入、删除等。
  18. install:指定项目安装时的目标文件和路径。
  19. string:操作字符串,例如转换为大写、小写、比较等。
  20. ifelseifelseendif:条件语句。

预定义变量

CMake 在处理不同平台和系统时提供了许多预定义变量,以下是一些常用的预定义变量:

  1. CMAKE_SYSTEM_NAME:当前系统的名称,如 “Linux”,“Windows”,“Darwin”(macOS)或 “FreeBSD” 等。
  2. CMAKE_HOST_SYSTEM_NAME:构建 CMake 时使用的系统名称,与 CMAKE_SYSTEM_NAME 类似,但适用于交叉编译。
  3. CMAKE_SYSTEM_PROCESSOR:目标平台的处理器架构,如 “x86_64”,“i686”,“arm” 或 “aarch64”。
  4. CMAKE_HOST_SYSTEM_PROCESSOR:CMake 构建时使用的系统的处理器架构。
  5. CMAKE_SYSTEM_VERSION:系统的版本号或其他版本信息。
  6. CMAKE_HOST_SYSTEM_VERSION:CMake 构建时使用的系统的版本信息。
  7. CMAKE_SYSTEM:当前系统的名称和版本,为 CMAKE_SYSTEM_NAMECMAKE_SYSTEM_VERSION 的组合。
  8. CMAKE_HOST_SYSTEM:CMake 构建时使用的系统的名称和版本。
  9. CMAKE_CROSSCOMPILING:如果当前构建是交叉编译,则此变量值为真。
  10. CMAKE_FIND_ROOT_PATH:在交叉编译时,用于寻找目标系统上支持库和头文件的路径。
  11. CMAKE_SIZEOF_VOID_P:CMake 编译器检测到的目标体系结构的 void * 的大小,可用于确定是 32 位还是 64 位系统。
  12. UNIX:如果当前系统是 Unix 类似系统(包括 Linux,macOS 和其他 Unix 系统),则此变量值为真。
  13. APPLE:如果当前系统是基于 Apple 的操作系统(如 macOS),则此变量值为真。
  14. WIN32:如果当前系统是基于 Windows 的操作系统,此变量值为真。
  15. CYGWIN:如果当前系统是 Cygwin(Windows 上运行的 Unix 类似环境),此变量值为真。
  16. MINGW:如果当前系统使用 MinGW 编译器(适用于 Windows),此变量值为真。
  17. MSVC:如果当前构建使用 Microsoft Visual C++ 编译器,则此变量值为真。
  18. CMAKE_COMPILER_IS_GNUCXX:如果当前构建使用 GNU C++ 编译器,则此变量值为真。

要获取关于所有 CMake 指令、变量和选项的更全面的了解,请参考 CMake documentation。

公众号 | FunIO
微信搜一搜 “funio”,发现更多精彩内容。
个人博客 | blog.boringhex.top

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

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

垃圾焚烧设备PLC数据采集远程监控系统解决方案

PLC可以应用于各种污染废物处理设备的自动化控制,如污水处理、垃圾焚烧、空气处理等。例如,通过对垃圾焚烧PLC设备的数据采集,可以实现对垃圾焚烧的温度、时间、氧气流量等数据的远程监控和实时预警,有效提高垃圾焚烧效率和环保效…

【设计模式|行为型】迭代器模式(Iterator Pattern)

概述 迭代器模式(Iterator Pattern)是一种行为型设计模式,它允许客户端通过一个逐个访问集合元素的接口来访问一个聚合对象中的每个元素,而不需要直接暴露该对象的内部表示方式。迭代器模式将遍历逻辑与聚合对象分离,…

【AHB-Lite总线】hreadyin和hreadyout的区别

AHB-Lite总线协议请查看 AHB-Lite总线协议 首先看下hreadyin和hreadyout在系统中的位置 从图中可以看到,每个AHB从设备都有一个HREADY输出信号(hreadyout),它连接到多路复用器。该多路复用器的输出是AHB主机看到的全局hready信…

【嵌入式学习笔记】嵌入式基础10——STM32时钟配置

1.认识时钟树 简单来说,时钟是具有周期性的脉冲信号,最常用的是占空比50%的方波 1.1.F1的时钟树 1.2.F4的时钟树(407为例) 1.3.F7的时钟树 1.4.H7的时钟树 2.配置系统时钟(F1为例) 2.1.系统时钟配置步骤 配置HSE VALUE:告诉HAL库外部晶振…

聊聊拉长LLaMA的一些经验

Sequence Length是指LLM能够处理的文本的最大长度,越长,自然越有优势: 更强的记忆性。更多轮的历史对话被拼接到对话中,减少出现遗忘现象 长文本场景下体验更佳。比如文档问答、小说续写等 当今开源LLM中的当红炸子鸡——LLaMA…

【143. 重排链表】

来源:力扣(LeetCode) 描述: 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln - 1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不…

运维面试大全

文章目录 第一阶段你是用过哪些Linux命令Linux 系统安全优化与内核优化经常使用shell脚本做什么软连接与硬链接的区别怎么查看文件IOS七层模型三次握手与四次挥手lvm 逻辑卷创建过程磁盘配额raid 磁盘阵列文本三剑客防火墙iptables与firewardLinux系统资源查询命令日志的八大等…

【Git系列】Git到远程仓库

🐳Git到远程仓库 🧊1. github账号注册🧊2. 初始化本地仓库🧊3. 创建GitHub远程仓库🧊4. 给本地仓库起别名🪟4.1 查看远程库的连接地址🪟4.2 起别名 🧊5. git推送操作🧊6.…
推荐文章