CMakeLists.txt语法规则:改变行为的变量说明一

一.  简介

前面一篇文章学习了 CMakeLists.txt语法中的 部分常量变量,具体学习提供信息的变量,文章如下:

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

CMakeLists.txt语法规则:提供信息的变量说明二-CSDN博客

本文继续学习 CMakeLists.txt语法中的常用变量,主要学习改变行为的一些常用变量。

二.  CMakeLists.txt语法规则:改变行为的变量

顾名思义,意味着这些变量可以改变某些行为,所以我们可以通过对这些变量进行设置以改变行为。

接下来对以上命令的使用进行说明。

1.  BUILD_SHARED_LIB 命令

对于 add_library() 命令,当没有显式指定生成动态库时( SHARED 选项),默认生成的是静态库;
其实我们可以通过 BUILD_SHARED_LIBS 变量来控制 add_library() 命令的行为,当将变量设置为 on 时表示使能 动态库,则 add_library() 默认生成的便是动态库文件;
当变量设置为 off 或未设置时, add_library() 默认生成 的便是静态库文件。
譬如工程目录结构如下所示:

顶层 CMakeLists.txt 文件如下所示:
# 顶层 CMakeLists.txt
cmake_minimum_required("VERSION" "3.5")
project(HELLO VERSION 1.1.0)set(BUILD_SHARED_LIBS on)
add_library(hello hello/hello.c)
add_library(world world/world.c)
进入到 build 目录下,执行 cmake ..命令 make命令后 进行构建、编译,将会生成动态库文件 libhello.so libworld.so

2. CMAKE_BUILD_TYPE

设置编译类型 Debug 或者 Release debug 版会生成相关调试信息,可以使用 GDB 进行调试; release 不会生成调试信息:
# Debug 版本
set(CMAKE_BUILD_TYPE Debug)
# Release 版本
set(CMAKE_BUILD_TYPE Release)
关于这个 Debug 或者 Release 版本的问题,后续有机会再给大家进行专题介绍。

3.  CMAKE_SYSROOT

cmake 会将该变量传递给编译器--sysroot 选项,通常我们在设置交叉编译时会使用到,后面再说!

下一篇文章继续学习CMakeLists.txt语法中 一些(改变行为的)常用变量。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构(链表)

文章目录 1.单链表1.基本介绍1.定义2.逻辑结构 2.应用实例1.需求分析2.思路分析3.完成添加和显示链表信息,直接添加到链表的尾部4.根据排名添加,如果排名重复则给出提示5.根据新节点的编号来修改信息6.删除指定id的节点 3.单链表面试题1.题目2.面试题一2…

全栈开发之路——前端篇(5)组件间通讯和接口等知识补充

全栈开发一条龙——前端篇 第一篇:框架确定、ide设置与项目创建 第二篇:介绍项目文件意义、组件结构与导入以及setup的引入。 第三篇:setup语法,设置响应式数据。 第四篇:数据绑定、计算属性和watch监视 辅助文档&…

linux的信号量的使用

1.信号量 在多线程情况下,线程要进入关键代码就得获取信号量(钥匙){sem_init(&sem, 0, 0);},没有信号量的情况下就一直等待sem_wait(&sem),只到别人把钥匙(sem_post(&sem))给你。 …

代码随想录Day 41|Leetcode|Python|198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III

198.打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个…

【C++】---继承

【C】---继承 一、继承的概念及定义1、继承的概念2、定义语法格式3、继承基类成员访问方式的变化 二、基类 和 派生类 的对象之间的赋值转换1、赋值规则2、切片(1)子类对象 赋值 给 父类对象(2)子类对象 赋值 给 父类指针&#xf…

基于JSP物流信息网的设计与实现(论文 + 源码)

【免费】物流信息网实现.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89267499 基于JSP物流信息网的设计与实现 摘要 本文讲述了基于JSP物流信息网的设计与实现。该系统使用java语言开发,使系统具有更好的平台性和可扩展性。 该系统实现了用户登录、…

英语学习笔记6——What make is it?

What make is it? 它是什么牌子的? make n.(产品的)品牌名称    v. 制作 区别:model n.(产品的)型号       n. 模型       n. 模特 make 指的是大的品牌名称, model 是旗下产品…

第2章.STM32开发C语言常用知识点

目录 0. 《STM32单片机自学教程》专栏总纲 2.1. STM32嵌入式开发C语言编程的不同 2.2. C语言常用知识点 2.2.1 位操作 2.2.2 define 宏定义 2.2.3 条件编译 2.2.3.1 #ifdef 2.2.3.2 #ifndef 2.2.3.3 #if !defined 2.2.4 extern 变量声明 2.2.5 typedef 类型别名 …

Sealos急速部署生产用k8s集群

最近一段时间部署k8s全部使用sealos了,整体使用感觉良好,基本没有什么坑。推荐给大家。 使用 Sealos,可以安装一个不包含任何组件的裸 Kubernetes 集群。 最大的好处是提供 99 年证书,用到我跑路是足够了。不用像之前kubeadm安装…

在uniapp中如何安装axios并解决跨域问题

目录 1、安装axios 2、导入 3、使用(发请求) 2.解决跨域问题 1.为什么要解决跨域问题? 2.前端如何解决跨域问题? 1、安装axios npm install axios 2、导入 在main.js中导入使用 import axios from axios; // 创建一个名…

通过 Java 操作 redis -- hash 哈希表基本命令

目录 使用命令 hset,hget 使用命令 hexists 使用命令 hdel 使用命令 hkeys,hvals 使用命令 hmget,hmset 关于 redis hash 哈希表类型的相关命令推荐看Redis - hash 哈希表 要想通过 Java 操作 redis,首先要连接上 redis 服务…

思通数科大模型在智能数据查询系统中的深度应用:销售数据分析的革新

在企业决策支持系统中,销售数据分析占据着举足轻重的地位。思通数科的大模型技术,结合自然语言处理(NLP)和机器学习,为智能数据查询系统提供了强大的分析能力。本文将详细描述思通数科大模型在销售数据分析中的应用&am…

固定资产管理系统参考论文(论文 + 源码)

【免费】固定资产管理系统.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89282536 固定资产管理系统 摘 要 随着计算机信息技术的发展以及对资产、设备的管理科学化、合理化的高要求,利用计算机实现设备及资产的信息化管理已经显得非常重要。 固…

渗透之sql注入实战2(二次注入)

目录 平台地址: 开始: 方法1: 方法二 找提示 这里存在一个文件包含(file)。 爆源码 index.php源码 confirm.php源码: search.php源码: change.php源码: delete.php源码&…

【如何在本地安装Llama 3,坐好30秒!稳的很!!】

如何在本地安装Llama 3,30秒闪速教程 点击 Ollama官网 点击对应系统内容进行下载 解压后打开文件: 双击后打开 复制 打开CMD 窗口终端 复制黏贴 ollama run llama3 等下载完成 OK,安装完成! 输入问题,愉快玩耍! …

嵌入式学习69-C++(Opencv)

知识零碎: QT的两种编译模式 1.debug 调试模式 …

C++:类与对象—继承

类与对象—继承 一、继承是什么?二、继承定义三、基类和派生类对象赋值转换四、继承中的作用域五、派生类的默认成员函数六、继承与友元七、继承与静态成员八、复杂的菱形继承及菱形虚拟继承九、继承的总结和反思十、考察重点 一、继承是什么? 继承(inh…

​​​【收录 Hello 算法】第 4 章 数组与链表

第 4 章 数组与链表 数据结构的世界如同一堵厚实的砖墙。 数组的砖块整齐排列,逐个紧贴。链表的砖块分散各处,连接的藤蔓自由地穿梭于砖缝之间。 本章内容 4.1 数组4.2 链表4.3 列表4.4 内存与缓存 *4.5 小结

Clion STM32CubeMX 项目

系列文章目录 前言 最后修改 2024 年 4 月 16 日 操作系统:Windows / Linux / macOS 所需工具 STM32CubeMX、GNU ARM 工具链 项目格式: CMake 兼容配置: OpenOCD 运行与调试/嵌入式 GDB 服务器 对于以 STM32 板卡为目标的嵌入式项目&#xf…

小白入门:创建一个SpringBoot项目

前言 我们在创建SpringBoot项目时候,会出现不确定和报错的情况很多,大家可以按照我的做法来简单创建一个SpringBoot项目 1.环境配置 下载安装并配置jdk1.8下载apache mavenidea软件 2.开始创建项目 Server URL:初始是start.spring.io,我…