gpt4 book ai didi

cmake - 使用 CMake 将进程输出作为特定目标的编译选项传递时避免使用引号

转载 作者:行者123 更新时间:2023-12-01 00:56:18 25 4
gpt4 key购买 nike

我对 CMake 有问题:
我用 execute_process()设置一个变量,我希望该变量将它作为选项传递给编译器。
CMake 在变量周围设置引号,以便编译器得到错误的输入。

具体来说:我只需要使用特定目标编译 SDL2。

# CMakeLists.txt
execute_process(COMMAND "sdl2-config" "--cflags" OUTPUT_VARIABLE SDL2_CFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
target_compile_options(SpecialTarget PUBLIC ${SDL2_CFLAGS})
sdl2-config --cflags的输出是:
-I/usr/include/SDL2 -D_REENTRANT

CMake 现在以这种方式调用编译器:
/usr/bin/c++ ... "-I/usr/include/SDL2 -D_REENTRANT" ...

这当然行不通。我需要去掉引号。

如果一个使用
add_definitions(${SDL2_CFLAGS})

一切正常。但我需要 target_compile_options因为我不想要所有目标上的选项。

最佳答案

您可以使用 separate_arguments 命令:

separate_arguments(SDL2_CFLAGS UNIX_COMMAND "${SDL2_CFLAGS}")
target_compile_options(SpecialTarget PUBLIC ${SDL2_CFLAGS})

关于cmake - 使用 CMake 将进程输出作为特定目标的编译选项传递时避免使用引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27650807/

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