gpt4 book ai didi

cmake - 如何在 CMake 中将组合编译器选项与 target_compile_options 一起传递?

转载 作者:行者123 更新时间:2023-12-02 09:06:07 24 4
gpt4 key购买 nike

我正在使用定制的 clang/llvm 来构建我的项目。自定义基本上是添加优化 channel 。在使用 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 实现这一点?

最佳答案

https://cmake.org/cmake/help/v3.12/command/target_compile_options.html :

The set of options is de-duplicated to avoid repetition. While beneficial for individual options, the de-duplication step can break up option groups. For example, -D A -D B becomes -D A B. One may specify a group of options using shell-like quoting along with a SHELL: prefix. The SHELL: prefix is dropped and the rest of the option string is parsed using the separate_arguments() UNIX_COMMAND mode. For example, "SHELL:-D A" "SHELL:-D B" becomes -D A -D B.



所以在你的情况下,这将是:
target_compile_options(vslib INTERFACE "SHELL:-mllvm -MyOption" "SHELL:-mllvm -MyOption2=val")

关于cmake - 如何在 CMake 中将组合编译器选项与 target_compile_options 一起传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58398844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com