1.5 向用户显示选项

    前面的配置中,我们引入了条件句:通过硬编码的方式给定逻辑变量值。不过,这会影响用户修改这些变量。CMake代码没有向读者传达,该值可以从外部进行修改。推荐在中使用option()命令,以选项的形式显示逻辑开关,用于外部设置,从而切换构建系统的生成行为。本节的示例将向您展示,如何使用这个命令。

    看一下前面示例中的静态/动态库示例。与其硬编码USE_LIBRARYONOFF,现在为其设置一个默认值,同时也可以从外部进行更改:

    1. 用一个选项替换上一个示例的set(USE_LIBRARY OFF)命令。该选项将修改USE_LIBRARY的值,并设置其默认值为OFF

    -D开关用于为CMake设置任何类型的变量:逻辑变量、路径等等。

    option可接受三个参数:

    • "help string"记录选项的字符串,在CMake的终端或图形用户界面中可见。
    • [initial value]选项的默认值,可以是ONOFF

    如果USE_LIBRARYON,默认值为OFF,否则MAKE_SHARED_LIBRARY默认值为ON。可以这样运行:

    这仍然不会构建库,因为USE_LIBRARY仍然为OFF

    CMake有适当的机制,通过包含模块来扩展其语法和功能,这些模块要么是CMake自带的,要么是定制的。本例中,包含了一个名为CMakeDependentOption的模块。如果没有include这个模块,cmake_dependent_option()命令将不可用。参见 https://cmake.org/cmake/help/latest/module/CMakeDependentOption.html