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

【CMake】顶层 CMakeList.txt 常用命令总结

文章目录

  • cmake_minimum_required
    • 简介
    • 使用案例
      • 普通设置
      • 执行构建的cmake版本低于`<min>`
  • project
    • 简介
    • 使用案例
      • 普通设置
  • set
    • 简介
    • 使用案例
      • 普通设置

cmake_minimum_required

简介

  • 功能:为项目设置cmake的最低要求版本
  • 常用程度:⭐⭐⭐⭐⭐
  • 命令格式
cmake_minimum_required(VERSION <min>[...<policy_max>] [FATAL_ERROR])
  • 命令详解
    • <min><policy_max>的格式:major.minor[.patch[.tweak]]
      • major:主版本号
      • minor:次版本号
      • patch:补丁版本号
      • tweak:微调版本号
    • 如果执行构建的cmake版本低于<min>,项目构建会停止并且会报告错误
    • <policy_max>如果指定,必须至少为<min>,影响策略设置。

使用案例

  • Windows终端查看cmake版本
cmake --version
  • 输出当前版本号为3.28.3
D:\Test\projectX\build>cmake --version
cmake version 3.28.3CMake suite maintained and supported by Kitware (kitware.com/cmake).

普通设置

  • CMakeLists.txt中的内容
cmake_minimum_required(VERSION 3.27)
  • 【✅】执行cmake构建命令后的输出
-- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.19045.
-- Configuring done (0.0s)
-- Generating done (0.0s)
-- Build files have been written to: D:/Test/projectX/build

执行构建的cmake版本低于<min>

  • CMakeLists.txt中的内容
    cmake_minimum_required(VERSION 3.30)
    
  • 【❌】执行cmake构建命令后的输出:
    -- Selecting Windows SDK version 10.0.19041.0 
    to target Windows 10.0.19045.
    CMake Error at CMakeLists.txt:1 (cmake_minimum_required):CMake 3.30 or higher is required.  You are running version 3.28.3-- Configuring incomplete, errors occurred!   

project

简介

  • 功能:设置项目信息
  • 常用程度:⭐⭐⭐⭐⭐
  • 命令格式
project(<PROJECT-NAME> [<language-name>...])
project(<PROJECT-NAME>[VERSION <major>[.<minor>[.<patch>[.<tweak>]]]][DESCRIPTION <project-description-string>][HOMEPAGE_URL <url-string>][LANGUAGES <language-name>...])
  • 命令详解

使用案例

普通设置

  • CMakeLists.txt中的内容
cmake_minimum_required(VERSION 3.20)
project(projectX)
  • 【✅】执行cmake构建命令后的输出
-- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.19045.
-- Configuring done (0.0s)
-- Generating done (0.0s)
-- Build files have been written to: D:/Test/projectX/build

set

简介

  • 功能:设置变量值
  • 常用程度:⭐⭐⭐⭐⭐
  • 命令格式
set(<variable> <value>... [PARENT_SCOPE])
  • 命令详解

使用案例

普通设置

  • CMakeLists.txt中的内容
cmake_minimum_required(VERSION 3.20)
project(projectX)set(CMAKE_CXX_STANDARD 11)
  • 【✅】执行cmake构建命令后的输出
-- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.19045.
-- Configuring done (0.0s)
-- Generating done (0.0s)
-- Build files have been written to: D:/Test/projectX/build

相关文章:

  • 电源模块测试常用设备与计算公式方法
  • SpringMVC03、HelloSpring
  • 轻量化云组态平台
  • JSONObject在Android Main方法中无法实例化问题
  • php7.3.4连接sqlserver(windows平台)
  • CMS与其他老年代垃圾回收器的区别?
  • OSPF协议
  • 爬虫与DataFrame对象小小结合
  • [创业之路-99/管理者与领导者-141] :绩效管理-1-绩效管理是一把手工程、是系统工程、是化繁为简工程
  • 【Flutter】IOS运行工程二次启动崩溃问题。
  • Transformer家族
  • 汽车IVI中控开发入门及进阶(十四):功能安全
  • Spring Boot+Vue前后端分离项目如何部署到服务器
  • 基于YOLOv8深度学习的野外火焰烟雾检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测
  • 2024年AI辅助研发:科技创新的引擎
  • 2017 年终总结 —— 在路上
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • co模块的前端实现
  • Docker: 容器互访的三种方式
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Javascript Math对象和Date对象常用方法详解
  • jquery cookie
  • JS学习笔记——闭包
  • Linux各目录及每个目录的详细介绍
  • php面试题 汇集2
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • Vue全家桶实现一个Web App
  • 跨域
  • 每天10道Java面试题,跟我走,offer有!
  • 算法之不定期更新(一)(2018-04-12)
  • 一个完整Java Web项目背后的密码
  • 智能网联汽车信息安全
  • UI设计初学者应该如何入门?
  • 浅谈sql中的in与not in,exists与not exists的区别
  • # Panda3d 碰撞检测系统介绍
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (C语言)fgets与fputs函数详解
  • (七)c52学习之旅-中断
  • (一)80c52学习之旅-起始篇
  • (转)视频码率,帧率和分辨率的联系与区别
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .net 7 上传文件踩坑
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .Net6使用WebSocket与前端进行通信
  • .net操作Excel出错解决
  • .NET构架之我见
  • .NET中的十进制浮点类型,徐汇区网站设计
  • ::什么意思
  • :O)修改linux硬件时间
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)
  • [1]-基于图搜索的路径规划基础
  • [AIGC] SQL中的数据添加和操作:数据类型介绍
  • [Android Pro] android 混淆文件project.properties和proguard-project.txt