在生成器表达式中使用 cmake 选项

Wen*_*ell 7 cmake

我想在生成器表达式中使用 cmake 选项来打开某个编译标志。从文档中我不清楚如何实现这一点。

我想写一些类似的东西

option(MYOPTION " ... " OFF)
...
add_compile_options($<$<MYOPTION>:-lblas>)
Run Code Online (Sandbox Code Playgroud)

这不起作用。

有没有办法实现这一目标?

Cin*_*its 10

您的示例并没有真正为此指定用例,我认为还有其他方法可以解决它(以及作为-lblas链接器标志而不是编译选项。)就您提供的信息而言,它看起来像什么你可能想要的是:

option(MYOPTION "My Option" OFF)
...
add_compile_options($<$<BOOL:${MYOPTION}>:-lblas>)
#(or maybe you want?)
target_compile_definitions(YOUR_TARGET PRIVATE $<$<BOOL:${MYOPTION}>:-lblas>)
Run Code Online (Sandbox Code Playgroud)

$<$<BOOL:...>:...>需要一个变量来帮助评估(它MYOPTION满足。文档中列出了其他逻辑表达式,您可以使用。

  • [add_compiler_options](https://cmake.org/cmake/help/v3.9/command/add_compile_options.html) 命令的 CMake 文档明确指出,它可以使用生成器表达式。一般来说,只要 CMake 文档这样说,就允许生成器表达式。 (3认同)