QGIS-3.12.0 之 初识CMake (一)

本文介绍了在学习QGIS源码的过程中,如何通过CMakeLists.txt文件了解QGIS项目目录结构。内容包括CMAKE_MINIMUM_REQUIRED的用途,CMake策略的设定,如CMP0048、CMP0053和CMP0071,以及PROJECT()命令的使用来设置QGIS的版本和名称。
摘要由CSDN通过智能技术生成

在学习QGIS源码过程中,根据CMakeLists学习QGIS项目目录结构关系,顺带学习CMake使用。

文件:

QGIS-3.12.0 源码 根目录 CMakeLists.txt

位置: 3至13行

CMAKE_MINIMUM_REQUIRED(VERSION 3.1.0)
SET(CMAKE_COLOR_MAKEFILE ON)
#set path to additional CMake modules
SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
#POLICIES
CMAKE_POLICY (SET CMP0048 NEW)
CMAKE_POLICY (SET CMP0053 NEW)
CMAKE_POLICY (SET CMP0071 NEW)
#don’t relink it only the shared object changes
SET(CMAKE_LINK_DEPENDS_NO_SHARED ON)

命令:

  1. CMAKE_MINIMUM_REQUIRED()
  2. CMAKE_POLICY()
  3. SET()

解释:

  • CMAKE_MINIMUM_REQUIRED(VERSION <min>[...<max>] [FATAL_ERROR]):
    设置项目需要CMake的最低版本。如CMAKE_MINIMUM_REQUIRED(VERSION 3.1.0) 表示QGIS-3.12.0项目需要不低于3.1.0的CMake生成编译文件(版本形式: major.minor[.patch[.tweak]])。命令中min为必须参数,max,FATAL_ERROR为可选参数。可以设置max参数表示当前工程需要的CMake版本范围,eg:CMAKE_MINIMUM_REQUIRED(VERSION 2.6... 3.1.0),其中max要不小于min。FATAL_ERROR参数自2.6以上版本被忽略了,只要当前运行的CMake版本不在设置的版本范围内,都会报错退出,因此2.6以上版本可以省略此设置。其实,该命令的作用就是通过设置版本号,设置编译器采用的相关编译策略,即调用:CMAKE_POLICY(VERSION)。

  • CMAKE_POLICY(VERSION <min>[...<max>])
    随着CMake的发展,有时有必要更改现有的行为,以修复bug或改进现有特性的实现。CMake策略机制旨在帮助保持现有项目的构建,因为CMake的新版本引入了行为的变化。每个新策略(行为变化)都被赋予CMP形式的标识符,其中是一个整数索引(参考https://cmake.org/cmake/help/v3.18/manual/cmake-policies.7.html)。与每个策略相关联的文档描述了新旧行为以及引入策略的原因。项目可以设置每个策略来选择所需的行为。当CMake需要知道使用哪个行为时,它会检查项目指定的设置。如果没有可用的设置,则假定为旧的行为,并生成警告,请求设置策略。虽然支持单独设置策略(即CMAKE_POLICY (SETCMP<NNNN>NEW)形式),官网说明鼓励项目基于CMake版本设置策略(即:CMAKE_POLICY(VERSION <min>[...<max>])形式
    )。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值