作者:丁志翔64164 | 来源:互联网 | 2022-10-11 17:40
我正在使用自定义的clang / llvm来构建我的项目。定制基本上是添加优化过程。在使用clang进行编译时,要将选项传递给我的通行证,我正在使用:
clang [..] -mllvm -MyOption [..]
现在,我需要以这种方式传递多个选项:
clang [..] -mllvm -MyOption -mllvm -MyOption2=value [..]
结合CMake的target_compile_options()
停止功能,CMake删除了第二个,-mllvm
因为它似乎认为它是重复的。
target_compile_options(vslib INTERFACE -mllvm -MyOption)
target_compile_options(vslib INTERFACE -mllvm -MyOption2=val)
我试着把"
这两个选项放在一起,不起作用。
有没有办法用CMake做到这一点?
1> emlai..:
https://cmake.org/cmake/help/v3.12/command/target_compile_options.html:
选项集将被重复删除,以避免重复。重复数据删除步骤虽然有益于单个选项,但可以拆分选项组。例如,-DA -DB变为-DAB。可以使用类似shell的引号和SHELL:前缀指定一组选项。SHELL:前缀被删除,其余的选项字符串则使用eparate_arguments()UNIX_COMMAND模式进行解析。例如,“ SHELL:-DA”“ SHELL:-DB”变为-DA-DB。
因此,在您的情况下,将是:
target_compile_options(vslib INTERFACE "SHELL:-mllvm -MyOption" "SHELL:-mllvm -MyOption2=val")