一. 简介
前面一篇文章学习了 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 版本的问题,后续有机会再给大家进行专题介绍。
cmake 会将该变量传递给编译器--sysroot 选项,通常我们在设置交叉编译时会使用到,后面再说!
下一篇文章继续学习CMakeLists.txt语法中 一些(改变行为的)常用变量。