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

本文介绍了CMakeLists.txt中改变行为的几个重要变量,如BUILD_SHARED_LIBS控制动态库生成,CMAKE_BUILD_TYPE设置编译类型,以及CMAKE_SYSROOT在交叉编译中的应用。通过实例演示了如何在项目中运用这些变量。
摘要由CSDN通过智能技术生成

一.  简介

前面一篇文章学习了 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语法中 一些(改变行为的)常用变量。

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值