我有一个 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})
Run Code Online (Sandbox Code Playgroud)
的输出sdl2-config --cflags是:
-I/usr/include/SDL2 -D_REENTRANT
Run Code Online (Sandbox Code Playgroud)
CMake 现在以这种方式调用编译器:
/usr/bin/c++ ... "-I/usr/include/SDL2 -D_REENTRANT" ...
Run Code Online (Sandbox Code Playgroud)
这当然行不通。我需要去掉引号。
如果一个使用
add_definitions(${SDL2_CFLAGS})
Run Code Online (Sandbox Code Playgroud)
一切正常。但我需要,target_compile_options因为我不想要所有目标上的选项。
您可以使用以下separate_arguments命令:
separate_arguments(SDL2_CFLAGS UNIX_COMMAND "${SDL2_CFLAGS}")
target_compile_options(SpecialTarget PUBLIC ${SDL2_CFLAGS})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1770 次 |
| 最近记录: |