如何指示CMake不要合并编译器参数



我的CMakeLists.txt:中有以下说明

target_compile_options(sometarget PRIVATE
$<$<OR:$<CONFIG:Release>,$<CONFIG:RelWithDebInfo>>:-mllvm --inline-threshold=8192>
$<$<OR:$<CONFIG:Release>,$<CONFIG:RelWithDebInfo>>:-mllvm -polly>
)

cmake主动将这些命令行选项转换为

-mllvm --inline-threshold=8192 -polly

然后将其传递给编译器(通过make文件(。当然,编译器抱怨它对-polly一无所知。

如何限制CMake的聪明并迫使它传递给编译器——这正是我的意思:

-mllvm --inline-threshold=8192 -mllvm -polly

来自cmake add_compile_options:

用于目标的最后一组编译或链接选项是通过累积当前目标的选项及其依赖项的使用要求来构建的。该选项集已消除重复以避免重复。重复数据消除步骤虽然有利于各个选项,但也可以分解选项组。例如,-D A-D B变为-D A B。可以使用类似shell的引号和shell:前缀指定一组选项。将删除SHELL:前缀,并使用separate_arguments((UNIX_COMMAND模式解析选项字符串的其余部分。例如;外壳:-D A"外壳:-D B";变成-D A-D B。

尝试:

"SHELL:$<$<OR:$<CONFIG:Release>,$<CONFIG:RelWithDebInfo>>:-mllvm --inline-threshold=8192>"
"SHELL:$<$<OR:$<CONFIG:Release>,$<CONFIG:RelWithDebInfo>>:-mllvm -polly>"

最新更新