参考:https://cmake.org/cmake/help/latest/manual/cmake-generator-expressions.7.html。
CMake的生成器表达式不算是特别常用,但是有一些场景可能是必须要使用的;或者在针对不同编译类型设置不同编译参数的时候可以巧妙应用,从而减少配置代码。
生成器表达式听起来稍微有点复杂,但是其实只需要掌握一些常用的功能就能够有所裨益,至于更加复杂的写法,在需要的时候研究一下即可。本文主要介绍下生成器表达式的概念、种类、和常用的一些生成器表达式。
一 概述
生成器表达式简单来说就是在CMake生成构建系统的时候根据不同配置动态生成特定的内容。比如:
- 条件链接,如针对同一个编译目标,debug版本和release版本链接不同的库文件
- 条件定义,如针对不同编译器,定义不同的宏
所以可以看到,其中的要点是条件,之所以需要自动生成,那绝大多数时候肯定是因为开发者无法提前确定某些配置,不能提前确定那往往就是有条件的。
生成器表达式的格式形如$<...>
,可以嵌套,可以用在很多构建目标的属性