为什么介子用单引号解释我的ccflags ?



我正在编辑一个介子构建文件。

文件正常运行时当前存在的行。
if cc.has_argument('-Wno-format-truncation')                                                                                                                                                                                           
default_cflags += '-Wno-format-truncation'
endif

我添加了一行,因为我想要调试信息:

default_cflags += '-ggdb -O0'

然而,这是用单引号解释的,并且破坏了make命令。

-Wno-missing-field-initializers -D_GNU_SOURCE -march=native '-ggdb -O0' -DALLOW_EXPERIMENTAL_API -MD -MQ

显然,cc不喜欢这样,抛出了一个错误。是什么原因导致meson用单引号解释这个输出?我试过双引号和不引号,但这会导致其他错误。

<标题>

编辑这是一个dpdk构建文件,所以编译器调用是:

executable('dpdk-' + name, sources,
include_directories: includes,
link_whole: link_whole_libs,
link_args: ldflags,
c_args: default_cflags,
dependencies: dep_objs)

+=meson使用语法向数组中添加元素(append)。因此,当数组稍后被平摊并且检测到空格时,我猜就会使用引号。所以一个接一个地添加:

default_cflags += '-ggdb'
default_cflags += '-O0'

或更新为数组:

default_cflags += ['-ggdb, '-O0']

关于调试信息,请查看meson的核心选项:buildtype优化和. 您可以配置您的构建而不包括相关标志到介子。构建(如果满足您的需要)。

要使用的选项是--buildtype=debug用于未优化的二进制,--buildtype=debugoptimized用于使用-g -O2构建的二进制。

作为列表对象传递这些CFLAGS参数的推荐方法。例如对于shared_library, static_library, executable和自定义c_args : default_cflags,其中default_cflags被声明为

default_cflags = []
...
...
...
if is_debug
default_cflags += ['-ggdb', '-O0']
endif
...
...

相关内容

  • 没有找到相关文章

最新更新