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