什么是生成器表达式(generator expression)?
CMake的生成器表达式是一种简洁、易读的方式,用于在构建过程中执行基于条件的操作。
CMake构建分为config和build阶段,生成器表达式的值在build阶段才得到。生成器表达式可用于根据某些条件设置某些变量和编译选项。
cmake-generator-expressions(7) — CMake 3.28.1 Documentation
BUILD_INFERFACE生成器表达式
cmake-generator-expressions(7) — CMake 3.28.1 Documentation
BUILD_INFERFACE生成器使用的主要目的是限制编译器的相关参数只在build阶段生效。
使用案例
Step 4: Adding Generator Expressions — CMake 3.28.1 Documentation
BUILD_INFERFACE限制“-Wall;-Wextra;-Wshadow;-Wformat=2;-Wunused”或者“-W3”只有在build(构建阶段)进行设置,避免编译器选项外溢,对使用者造成影响。